转自:https://blog.csdn.net/zhu522959034/article/details/80282670
文章写的不错,借鉴一下。
文章参考:https://blog.csdn.net/sinat_35261315/article/details/54730818
Qt提供了三个可以直接使用的视图类用于呈现模板中的数据,分别是QListView,QTableView和QTreeView。紧接着Qt又提供了基于这三个类设计的更方便的类,分别是QListWidget,QTableWidget,QTreeWidget。
QListWidget类是一个列表组件,内部的数据以列表的形式呈现出来。列表中每一个元素都是一个QListWidgetItem类。
QTableWidget类是一个表格组件,内部的数据以表格的形式呈现出来。表格中每一个元素都是一个QTableWidgetItem类。
QTreeWidget类是一个树组件,内部的数据以树的形式呈现出来。树中的每一个元素都是一个QTreeWidgetItem类。
话不多说,直接上代码:
//初始化我们在UI上定义的控件
this->qListWidget = this->ui->listWidget;
this->qTableWidget = this->ui->tableWidget;
this->qTreeWidget = this->ui->treeWidget;
//添加QListWidget子项目
new QListWidgetItem(QString(tr("Oak")), qListWidget);
new QListWidgetItem(QString(tr("Fir")), qListWidget);
qListWidget->addItem(new QListWidgetItem(QString(tr("Pine"))));
QStringList data;
data << "Aspen" << "Alamo" <<"Cedar";
qListWidget->addItems(data);
//添加QTableWidget表头和内容
QStringList weekList;
data << "Monday" << "Tuesday" <<"Wednesday"<< "Thursday" << "Friday" <<"Saturday"<<"Sunday";
qTableWidget->setHorizontalHeaderLabels(data);
QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg("Physics Class"));
// void setItem(int row, int column, QTableWidgetItem *item)
qTableWidget->setItem(1, 1, newItem);
qTableWidget->setItem(1, 2, new QTableWidgetItem(QString(tr("Chinese Class"))));
qTableWidget->setItem(2, 2, new QTableWidgetItem(tr("English Class")));
qTableWidget->setItem(3, 2, new QTableWidgetItem(tr("Music Class")));
//设置树形结构
QStringList headers;
headers << "Name" << "Number";
qTreeWidget->setHeaderLabels(headers);
QTreeWidgetItem *root = new QTreeWidgetItem(qTreeWidget, QStringList() << "Root" << "0");
QTreeWidgetItem *file01 = new QTreeWidgetItem(root, QStringList() << "File01" << "1");
new QTreeWidgetItem(file01, QStringList() << "File01_01" << "1");
new QTreeWidgetItem(file01, QStringList() << "File01_02" << "2");
QTreeWidgetItem *file02 = new QTreeWidgetItem(root, QStringList() << "File02" << "2");
new QTreeWidgetItem(file02, QStringList() << "File02_01" << "1");
//qTreeWidget->setColumnCount(1);
QList<QTreeWidgetItem *> items;
for (int i = 0; i < 10; ++i)
//items.append(new QTreeWidgetItem((QTreeWidget*)1, QStringList(QString("item: %1").arg(i))));
items.append(new QTreeWidgetItem(root, QStringList() << QString("File%1").arg(i+3) << QString("%1").arg(i+3) ));
qTreeWidget->insertTopLevelItems(0, items);
QListWidget类添加Item的方法如下:(默认都是添加到列表的尾端)
void QListWidget::addItem(QListWidgetItem *item)
void QListWidget::addItems(const QStringList &labels)
以及初始化时直接赋值:
new QListWidget(QString &, QListWidget *parent)
QTableWidget 类添加Item的方法如下:
//setItem 在对应的位置添加 QTableWidgetItem
void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)
QTreeWidget 类添加Item的方法如下:
void QTreeWidget::setHeaderLabels(const QStringList &labels)
new QTreeWidgetItem(QTreeWidgetItem *parent, QStringList &)
在将物品添加到tree小部件之前,必须用setColumnCount()设置列的数量
在标签列表中为每个条目添加一个列,并为每一列设置标签。
注意,setHeaderLabels()不会删除现有的列。
因为树状结构是层次结构,所以在添加的时候需要指出要添加的那个位置的根节点指针。