note

  • 个人理解, QListView 用于 显示数据,而数据的逻辑维护则由 QStandardItemModel 完成.

QStandardItemModel 创建

		if (nullptr							== pchannel_list_view_model_)
pchannel_list_view_model_ = new(std::nothrow) QStandardItemModel(ui->channel_list_view);

QListView添加QStandardItemModel

  • 绑定数据源
/// 绑定数据源
ui->channel_list_view->setModel(pchannel_list_view_model_);

QListView设置为不可编辑

/// 设置为不可编辑
ui->channel_list_view->setEditTriggers(QAbstractItemView::NoEditTriggers);

添加行

standard_item_ex* item1		= new(std::nothrow)  standard_item_ex(tr("new_channel"));
pchannel_list_view_model_->appendRow(item1);

note

  • standard_item_ex 的原型如下, 我对其做了扩展
class standard_item_ex : public QStandardItem
{
public:
explicit standard_item_ex(const QString& str_txt);
standard_item_ex(const QIcon &icon, const QString &text);
~standard_item_ex();
....
}

QListView 显示添加数据

ui->channel_list_view->update();

QListView滚动的最下面

ui->channel_list_view->scrollToBottom();

QListView获取选中的行

	QItemSelectionModel *selmodel			= ui->channel_list_view->selectionModel();
if (selmodel)
{
/// 解析: indexlist 即可
QModelIndexList indexlist = selmodel->selectedIndexes();
}

获取选择的行和列

  • 这里演示了 绑定的doublelciked的信号 和 下文的槽函数
void channel_widget::slot_list_view_item_double_clicked_(const QModelIndex & model_index)
{ /// 得到行列索引
int row_index = model_index.row();
int column_index = model_index.column();
}

根据行和列获取item


const int channel_row_index = 0;
const int column_index = 0;
QModelIndex& model_index = pchannel_list_view_model_->index(channel_row_index, column_index);
pchannel_list_view_model_->setData(model_index, str_new_name);

最新文章

  1. JS开发windows phone8.1系列之1
  2. akka笔记
  3. Weblogic Session复制策略与方式
  4. springMVC基础
  5. GET和POST的主要区别
  6. JAVA数组的定义及用法
  7. 在vs环境中跑动sift特征提取(原理部分)
  8. ASP.NET使用Jquery-Ajax向ashx传递参数中文出现乱码
  9. MySQL--连接属性
  10. 用 PS 调整服务器时间
  11. Android bluetooth介绍(四): a2dp connect流程分析
  12. 经常使用的正則表達式归纳—JavaScript正則表達式
  13. IOS开发-UI学习-UITextField的具体属性及用法
  14. 16.1 解决SecureCRT的Home+End+Del不好用使用方法
  15. tomcat是怎么找到项目lib目录下的jar包的,求大神解答
  16. 优雅的重载toString方法,打印对象内容而不是打印内存地址的方法
  17. leecode第四十三题(字符串相乘)
  18. 【问题】C4D中设置了界面颜色,如何恢复默认?
  19. 如何使用FF的Firebug组件中的net工具查看页面元素加载消耗时间
  20. bootstrap插件的一些常用属性介绍

热门文章

  1. Oracle-oracle中union和union all的区别
  2. STM32 BootLoader升级固件
  3. Linux驱动实践:如何编写【 GPIO 】设备的驱动程序?
  4. 学习java 7.24
  5. 并发 并行 进程 线程 协程 异步I/O python async
  6. 【leetcode】451. Sort Characters By Frequency
  7. 【STM32】基于正点原子『探索者』开发板的烧录
  8. xtrabackup原理
  9. Cocoapods 版本更新与更新到指定版本
  10. delete() and free() in C++