QT 学习笔记 QListWidget,QTableWidget和QTreeWidget

时间:2024-03-27 17:47:18

转自: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()不会删除现有的列。
因为树状结构是层次结构,所以在添加的时候需要指出要添加的那个位置的根节点指针。

QT 学习笔记 QListWidget,QTableWidget和QTreeWidget