找回密码
 立即注册
Qt开源社区 门户 查看内容

Qt之model和view基本介绍

2019-6-21 14:04| 发布者: admin| 查看: 1369| 评论: 0

摘要: (一)Qt中的模型类的层次结构Qt 内置了许多标准模型:QStringListModel:存储简单的字符串列表。QFileSystemModel:本地系统的文件和目录信息QStandardItemModel:可以用于树结构的存储,提供了层次数据(二)Qt中 ...
(一)Qt中的模型类的层次结构



Qt 内置了许多标准模型:

QStringListModel:存储简单的字符串列表。

QFileSystemModel:本地系统的文件和目录信息

QStandardItemModel:可以用于树结构的存储,提供了层次数据

(二)Qt中的视图类的层次结构



其中:QListView用于显示列表,QTableView用于显示表格,QTreeView用于显示层次数据

(三)模型中的索引

  1. 模型索引是数据与视图分离的重要机制

  2. 模型中的数据使用唯一的索引来访问

  3. QModelIndex是Qt中的模型索引类,它包含了具体的数据访问途径和一个指向模型的指针。



(四)QListWidget、QTreeWidget 和 QTableWidget介绍
  1. QListWidget

向列表中添加列表项的方法:


方法一

    new QListWidgetItem(QIcon(":/image/add.png"), tr("add"), listWidget);

    方法二


      listWidget->addItem(new QListWidgetItem(QIcon(":/image/add_gray.png"), tr("add_gray")));

      或则

        QListWidgetItem *newItem = new QListWidgetItem; newItem->setIcon(QIcon(":/image/add_red.png")); newItem->setText(tr("add_red")); listWidget->insertItem(3, newItem);

        效果图:



        具体代码如下:

          label = new QLabel(this); label->setFixedWidth(10);
          listWidget = new QListWidget(this);
          new QListWidgetItem(QIcon(":/image/add.png"), tr("add"), listWidget);new QListWidgetItem(QIcon(":/image/about.png"), tr("about"), listWidget);
          listWidget->addItem(new QListWidgetItem(QIcon(":/image/add_gray.png"), tr("add_gray"))); listWidget->addItem(new QListWidgetItem(QIcon(":/image/add_green.png"), tr("add_green")));
          QListWidgetItem *newItem = new QListWidgetItem; newItem->setIcon(QIcon(":/image/add_red.png")); newItem->setText(tr("add_red")); listWidget->insertItem(3, newItem);
          QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(label); layout->addWidget(listWidget);
          setLayout(layout);

          2 QTreeWidget




            QTreeWidget treeWidget;
            QStringList headers; headers << "Name" << "Number"; treeWidget.setHeaderLabels(headers);
            QStringList rootTextList; rootTextList << "Root" << "0"; QTreeWidgetItem *root = new QTreeWidgetItem(&treeWidget, rootTextList);
            new QTreeWidgetItem(root, QStringList() << QString("Leaf 1") << "1"); QTreeWidgetItem *leaf2 = new QTreeWidgetItem(root, QStringList() << QString("Leaf 2") << "2"); leaf2->setCheckState(0, Qt::Checked);
            QList<QTreeWidgetItem *> rootList; rootList << root; treeWidget.insertTopLevelItems(0, rootList);
            treeWidget.show();

            3 QTableWidget




                  QTableWidget tableWidget; tableWidget.setColumnCount(3); tableWidget.setRowCount(5);
              QStringList headers; headers << "ID" << "Name" << "Age" << "Sex"; tableWidget.setHorizontalHeaderLabels(headers);
              tableWidget.setItem(0, 0, new QTableWidgetItem(QString("0001"))); tableWidget.setItem(1, 0, new QTableWidgetItem(QString("0002"))); tableWidget.setItem(2, 0, new QTableWidgetItem(QString("0003"))); tableWidget.setItem(3, 0, new QTableWidgetItem(QString("0004"))); tableWidget.setItem(4, 0, new QTableWidgetItem(QString("0005"))); tableWidget.setItem(0, 1, new QTableWidgetItem(QString("20100112")));
              tableWidget.show();
              <END>




              ----------------------------------------------------------------------------------------------------------------------
              我们尊重原创,也注重分享,文章来源于微信公众号:DolphinHai,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
              ----------------------------------------------------------------------------------------------------------------------

              鲜花

              握手

              雷人

              路过

              鸡蛋
              
              公告
              可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了