写点什么

Qt | 视图便捷类的使用 QListWidget QTreeWidget QTableWidget

作者:YOLO.
  • 2022-10-12
    河北
  • 本文字数:1418 字

    阅读完需:约 5 分钟

Qt | 视图便捷类的使用 QListWidget QTreeWidget QTableWidget

前言:

从 Qt4 开始引进了一些标准部件来提供基于项的容器部件,它们的底层是通过模型/视图框架实现的。

  • QListWidget: 提供了一个项目列表部件。

  • QTreeWidget: 提供了一个多层次的树结构部件。

  • QTableWidget: 提供了一个以项目作为单元的表格部件。它们都继承了 QAbstractItemView 类的行为。它们之所以被成为便捷类,是因为它们使用起来比较简单,适合存储和显示少量的数据。

它们没有将视图和模型进行分离,没有视图类灵活,不能和任意的模型一起使用。所以建议如果数据存储和显示风格简单选用便捷类,如果实现自定义、复杂的数据展示选择视图类。

这些部件都可以在 Qt 的设计窗口中找到,用的时候可以直接拖拽使用,也可以使用代码的方式使用。

QListWidget 的使用:

单层的列表一般使用 QListWidget 来显示,里面的单元使用 QListWidgetItem 来表示,一个列表部件可以像一般的窗口那样进行创建。在创建 QListWidgetItem 时可以将它直接添加到已经创建的列表部件中,也可以通过 insertItem() 函数来添加。

列表中的每一个项目都可以显示一个文本标签和一个图标,还可以给项目添加提示。默认列表中的项目会根据项目的添加顺序进行排序,也可以通过 sortItems() 函数对项目进行排序。

QListWidget listWidget;//一种添加项目的简单方法new QListWidgetItem("a", &listWidget);
//添加项目的另一种方法,可以进行各种设置QListWidgetItem *listWidgetItem = newQListWidgetItem;listWidgetItem->setText("b");listWidgetItem->setIcon(QIcon("image/b.png"));listWidgetItem->setToolTip("this is b!");listWidgetItem.insertItem(1, listWidgetItem);
//设置列表排序为倒序listWidget.sortItems(Qt::DescendingOrder);
复制代码

排序:

  • Qt::DescendingOrder:按字母降序排序

  • Qt::AscendingOrder:按字母升序排序

QTreeWidget 的使用:

树或者项目的层次列表由 QTreeWidget 和 QTreeWidgetItem 类提供,树部件中的每一个项目都可以有他自己的子项目,而且可以显示多列。添加项目前必须先使用 setColumnCount() 函数设置列的个数。

QTreeWidget treeWidget;//必须要设置列数treeWidget.setColumnCount(2);//设置标头QStringList headers;headers << "name" << "year";treeWidget.setHeaderLabels(headers);//添加项目QTreeWidgetItem *grade1 = new QTreeWidgetItem(&treeWidget);grade1->setText(0, "Grade1");QTreeWidgetItem *student1 = new QTreeWidgetItem(grade1);student1->setText(0, "Tom");student1->setText(1, "1996");QTreeWidgetItem *grade2 = new QTreeWidgetItem(&treeWidget,grade1);grade2->setText(0, "Grade2");
复制代码

QTableWidget 的使用:

项目表格使用 QTableWidget 和 QTableWidgetItem 来构建,它提供了一个包含标头和项目的可滚动表格部件。表格一般在构造时就指定它的行数和列数,项目可以在表格外先构建,然后添加到表格中的指定位置。表格项目还可以做水平标头或垂直标头。

//创建表格部件,同时指定行数和列数QTableWidget tableWidget(3, 2);//创建表格项目,并插入到指定单元QTableWidgetItem *tableWidgetItem = new QTableWidgetItem("qt");tableWidget.setItem(1, 1, tableWidgetItem);//创建表格项目,并将它们作为标头QTableWidgetItem *headerV = new QTableWidgetItem("first");tableWidget.setVerticalHeaderItem(0, headerV);QTableWidgetItem *headerH = new QTableWidgetItem(ID);tableWidget.setHoriaontalHeaderItem(0, headerH);
复制代码


发布于: 刚刚阅读数: 3
用户头像

YOLO.

关注

还未添加个人签名 2022-05-06 加入

还未添加个人简介

评论

发布
暂无评论
Qt | 视图便捷类的使用 QListWidget QTreeWidget QTableWidget_qt_YOLO._InfoQ写作社区