ITKeyword,专注技术干货聚合推荐

注册 | 登录

Qt Model/View 学习笔记 (二)

lujunql 分享于

2020腾讯云10周年活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:Qt Model/View 学习笔记 (一)

本文来源 :清源游民 介绍 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系。这种结构带来的 功能上的分离给了开发人员更大的

本文来源:清源游民

为使用Models与views热身

介绍
Qt提供了两个标准的models:QStandardItemModel和QDirModel。QStandardItemModel是一个多用途的
model,可用于表示list,table,tree views所需要的各种不同的数据结构。这个model也持有数据。QDirModel
维护相关的目录内容的信息,它本身不持有数据,仅是对本地文件系统中的文件与目录的描述。
QDirModel是一个现成的model,很容易进行配置以用于现存的数据,使用这个model,可以很好地展示如何
给一个现成的view设定model,研究如何用model indexes来操纵数据。

model与views的搭配使用

QListView与QTreeView很适合与QDirModel搭配。下面的例子在tree view与list view显示了相同的信息,QDirModel提供了目录内容数据。这两个Views共享用户选择,因此每个被选择的项在每个view中都会被高亮。

先装配出一个QDirModel以供使用,再创建views去显示目录的内容。这给我展示了使用model的最简单的方式。
model的创建与使用都在main()函数中完成:
 

int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     QSplitter *splitter = new QSplitter;
     QDirModel *model = new QDirModel;
    //从缺省目录创建数据
     QTreeView *tree = new QTreeView(splitter);
     tree->setModel(model);
     tree->setRootIndex(model->index(QDir::currentPath()));
     QListView *list = new QListView(splitter);
     list->setModel(model);
     list->setRootIndex(model->index(QDir::currentPath()));
     //配置一个view去显示model中的数据,只需要简单地调用setModel(),并把目录model作为参数传递
     //setRootIndex()告诉views显示哪个目录的信息,这需要提供一个model index,然后用这个
     //model index去model中去获取数据
     //index()这个函数是QDirModel特有的,通过把一个目录做为参数,得到了需要的model index
     //其他的代码只是窗口show出来,进入程序的事件循环就好了
      splitter->setWindowTitle("Two views onto the same directory model");
     splitter->show();
     return app.exec();
 }

上面的例子并没有展示如何处理数据项的选择,这包括很多细节,以后会提到。


推荐:Qt Model/View 学习笔记

介绍 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系。这种结构带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示

本文来源:清源游民 为使用Models与views热身 介绍 Qt提供了两个标准的models:QStandardItemModel和QDirModel。QStandardItemModel是一个多用途的 model,可用于表示list,table,tree views所需

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。