当前位置:   article > 正文

QListView学习

qlistview

参考:QT常用控件——QListView控件-CSDN博客

感谢这位博主的分享!!! 

代码:

  1. QListView listview; //创建QListView对象
  2. QStringList list; //创建数据显示列表
  3. list.append("苹果");
  4. list.append("香蕉");
  5. list.append("桃子");
  6. //使用数据列表创建数据显示模型
  7. QStringListModel *listmodel = new QStringListModel(list);
  8. listview.setModel(listmodel); //设置模型到listview上
  9. listview.setMovement(QListView::Free); //设置数据可以自由拖动
  10. listview.setSpacing(2); //设置数据的间距
  11. listview.show();

效果:

思考:

setMovement

1.QListView::Free下:

可以拖拽item到最下面,相当于在尾部添加了一个item。

而拖拽到已存在的item上时,该item值会被覆盖。

2.listview.setMovement(QListView::Static);

使用这种移动模式:无法移动项目。

3.listview.setMovement(QListView::Snap);

可以自由移动,移动时会捕捉到网格

效果图:

void setSpacing(int space)

代码:

  1. #include "listview.h"
  2. #include "ui_listview.h"
  3. listview::listview(QWidget *parent) :
  4. QWidget(parent),
  5. ui(new Ui::listview)
  6. {
  7. ui->setupUi(this);
  8. view=new QListView; //创建QListView对象
  9. view->setGeometry(30,30,100,300);
  10. QStringList list; //创建数据显示列表
  11. list.append("苹果");
  12. list.append("香蕉");
  13. list.append("桃子");
  14. //使用数据列表创建数据显示模型
  15. QStringListModel *listmodel = new QStringListModel(list);
  16. view->setModel(listmodel); //设置模型到listview上
  17. view->setMovement(QListView::Snap); //设置数据可以自由拖动
  18. view->setSpacing(2); //设置数据的间距
  19. view->show();
  20. }
  21. listview::~listview()
  22. {
  23. delete ui;
  24. }
  25. void listview::on_spinBox_valueChanged(int arg1)
  26. {
  27. view->setSpacing(arg1);
  28. }

测试:

数据图:

clicked(QModelIndex)信号的使用

代码:

connect(view,SIGNAL(clicked(QModelIndex)),this,SLOT(slotClicked(QModelIndex)));
  1. void listview::slotClicked(const QModelIndex &index)
  2. {
  3. ui->label->setText("选择的水果是:"+index.data().toString());
  4. }

效果:

参考:

qt的ListView中设置setIndexWidget_listview 默认index-CSDN博客

代码: 

listView与widget的组合------相关demo

  1. #include <QListView>
  2. #include <QStandardItemModel>
  3. #include <QCheckBox>
  4. QListView view;
  5. QStandardItemModel *model = new QStandardItemModel(&view);
  6. view.setModel(model);
  7. //view与model绑定
  8. //view是页面
  9. //model是背后的数据
  10. for(int i = 0; i < 5; i++) {
  11. QStandardItem *item = new QStandardItem(QString::number(i));
  12. model->appendRow(item);
  13. //model与item:
  14. //model中包含许多的item
  15. //item就是model的一组数据
  16. QModelIndex index = model->indexFromItem(item);
  17. //根据item得到model中对应的modelIndex
  18. QCheckBox *box = new QCheckBox( &view);
  19. box->setCheckable(true);
  20. box->setCheckState(Qt::Unchecked);
  21. box->setText("ssss");
  22. view.setIndexWidget(index, box);
  23. //对应关系:item-----index-----widget
  24. }
  25. view.show();

效果图:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/783802
推荐阅读
  

闽ICP备14008679号