QListView和QListWidget的区别
来源:互联网 发布:java 查看堆栈信息 编辑:程序博客网 时间:2024/05/20 17:40
文章来源:http://blog.csdn.net/leaf6094189/article/details/5803763
QListView是基于Model,而QListWidget是基于Item。这是它们的本质区别。
往QListView中添加条目需借助QAbstractListModel:
如:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QStringListModel* slm = new QStringListModel(this);
QStringList* sl = new QStringList();
sl->append("asdfsadfsa");
sl->append("asdfsadfsa");
sl->append("asdfsadfsa");
slm->setStringList(*sl);
ui->listView->setModel(slm);
delete sl;
}
而在QListWidget中添加条目可以直接additem
如:
QListWidget list;
list.setViewMode(QListWidget::IconMode );
list.setResizeMode(QListWidget::Adjust);
list.setMovement(QListWidget::Static);
for(int i =0; i < 100 ; i ++){
QListWidgetItem *item = new QListWidgetItem(&list);
QStyle::StandardPixmap sp = (QStyle::StandardPixmap)(i % 57);
item->setData(Qt::DecorationRole, qApp->style()->standardPixmap(sp).scaled(QSize(16,16), Qt::KeepAspectRatio, Qt::SmoothTransformation) );
item->setData(Qt::DisplayRole,QObject::tr("Item %1").arg(i));
}
我们可以通过信号和槽的方式对列表控件的选项进行响应,例如
connect(list, SIGNAL(currentTextChanged(QString)), this, SLOT(setText(QString)));
总之,QListWidget是继承QListView,QListView是基于model的,需要自己来建模(例如建立QStringListModel、QSqlTableModel等),保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定了解,初学者就先不要考虑了,而QListWidget是一个升级版本的QListView,它已经自己为我们建立了一个数据存储模型(QListWidgetItem),操作方便,直接调用addItem即可添加项目(ICON,文字)。
- QListView和QListWidget的区别
- QListView和QListWidget
- QListView和QListWidget
- QListView QListWidget 弹出菜单
- QListView 和 QStandardItemModel的使用
- 处理控件滚动条事件的例子(QListWidget QListView等)
- QListView,QTreeView和 QStandardItemModel的简单使用
- QListView,QTreeView和 QStandardItemModel的简单使用
- qListView 和 qStandardItemModel
- QListWidget和QListWidgetItem的简单使用
- QListWidget和QListWidgetItem的简单使用
- QListWidget和QListWidgetItem的简单使用
- 关于QListWidget的Drag和Drop用法
- QListWidget和QListWidgetItem的简单使用
- QListWidget和QListWidgetItem的简单使用
- QListWidget和QListWidgetItem的简单使用
- QListView的样式
- QListView的使用
- 验证括号是否匹配
- 利用dos使用debug调试程序
- c++ Primer(第五版) 课后题答案(六)
- 那些不知不觉的手机墓志铭
- hashMap按照value进行排序
- QListView和QListWidget的区别
- 微信公共服务平台开发(.Net 的实现)11-------客服消息(定项消息推送 重要的OPENID)
- xammp start apache service FQA(xammp启动apache服务问题解决方案汇总)
- js基本功能大全
- 在Eclipse/MyEclipse中安装spket插件
- 语音输入和文字输入动画切换
- 15.C语言和设计模式(代理模式)
- How to Change the Hostname of a Linux System
- 谁将是互联网宝宝军团的最大劲敌?