Qt 项目视图的便捷类
Qt中提供了一些标准部件来提供经典的基于项的容器部件,它们的底层是通过模型、视图框架实现的。
这些部件分别是QListWidget、QTreeWidget、QTableWidget。这些部件都继承了QAstractItemView 类的行为。
因为这些部件没有将视图和模型分离,所以没有视图类灵活,不能和任意的模型一起使用,一般用来处理数据。
一、关于QListWidget 的简单使用
// QListWidget
QListWidget listWidget;
// 一种添加项目的简便方法
new QListWidgetItem("hello", &listWidget);
new QListWidgetItem("world", &listWidget);
// 添加项目的另一种方法,这样还可以进行各种设置
QListWidgetItem *listWidgetItem = new QListWidgetItem;
listWidgetItem->setText("b");
listWidgetItem->setIcon(QIcon("../modelView2/yafeilinux.png"));
listWidgetItem->setToolTip("this is b!");
listWidget.insertItem(1, listWidgetItem);
// 设置排序为倒序
//listWidget.sortItems(Qt::DescendingOrder);
// 显示列表部件
listWidget.show();
单层的项目列表一般使用QListWidget和QListWidgetItem来显示。
二、QTreeWidget的使用
// QTreeWidget
QTreeWidget treeWidget;
// 必须设置列数
treeWidget.setColumnCount(2);
// 设置标头
QStringList headers;
headers << "name" << "year";
treeWidget.setHeaderLabels(headers);
// 添加项目
QTreeWidgetItem *grade1 = new QTreeWidgetItem(&treeWidget);
grade1->setText(0,"Grade1");
QTreeWidgetItem *student = new QTreeWidgetItem(grade1);
student->setText(0,"Tom");
student->setText(1,"1986");
QTreeWidgetItem *grade2 = new QTreeWidgetItem(&treeWidget, grade1);
grade2->setText(0,"Grade2");
treeWidget.show();
树或者项目的层次列表由QTreeWidget和QTreeWidgetItem类提供。在树部件中的每一个项目都可以有它自己的子项目,而且可以显示多列的信息。
三、QTableWidget部件
// QTableWidget
// 创建表格部件,同时指定行数和列数
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.setHorizontalHeaderItem(0,headerH);
tableWidget.show();
项目表格使用QTableWidget和QTableWidgetItem来构建,它提供了一个包含表头和项目的可滚动表格部件。
表格一般在构造的时候就指定它的行数和列数,数据项可以在表格外构建,然后再添加到表格中指定的位置。
表格项目还可以作为水平或者垂直表头。