Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看 活动详情 。
从Qt4开始引进了一些标准部件来提供基于项的容器部件,它们的底层是通过模型/视图框架实现的。
它们没有将视图和模型进行分离,没有视图类灵活,不能和任意的模型一起使用。所以建议如果数据存储和显示风格简单选用便捷类,如果实现自定义、复杂的数据展示选择视图类。
这些部件都可以在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);
复制代码