• (转)Qt Model/View 学习笔记 (二)——Qt Model/View模式举例


    Qt Model/View模式举例

    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中都会被高亮。

    QTreeView - zhengjiu_520 - !snows snowy world!先装配出一个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();
     }

  • 相关阅读:
    2014阿里巴巴面试题哈尔滨
    Hadoop分布式集群配置
    Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)
    安装VMware Workstation提示the msi failed的解决办法
    Scalaz(35)- Free :运算-Trampoline,say NO to StackOverflowError
    Scalaz(34)- Free :算法-Interpretation
    Scalaz(33)- Free :算式-Monadic Programming
    Scalaz(32)- Free :lift
    Scalaz(31)- Free :自由数据结构-算式和算法的关注分离
    Scalaz(30)- Free :Natural Tranformation ~>
  • 原文地址:https://www.cnblogs.com/takeaction/p/3661862.html
Copyright © 2020-2023  润新知