Qt学习笔记-----QListWidget,QTableWidget和QTreeWidget
在MV架構中,Qt提供了三個可以直接使用的視圖類用于呈現模板中的數據,分別是QListView,QTableView和QTreeView。不過還沒完,緊接著Qt又提供了基于這三個類設計的更方便的類,分別是QListWidget,QTableWidget,QTreeWidget。
這三個類分別繼承于上述三個視圖類,實現了基本的函數,可以實現添加和刪除等基本的功能,同時它們使用內部的model來管理每一個元素,無需我們對model進行設置。如果需要對編輯進行限制,我們可以在自定義Delegate類,這也正是model/view架構的基本框架。
QListWidget類是一個列表組件,內部的數據以列表的形式呈現出來。列表中每一個元素都是一個QListWidgetItem類。
QTableWidget類是一個表格組件,內部的數據以表格的形式呈現出來。表格中每一個元素都是一個QTableWidgetItem類。
QTreeWidget類是一個樹組件,內部的數據以樹的形式呈現出來。樹中的每一個元素都是一個QTreeWidgetItem類。
向這三個類中添加元素的方法類似。
#include "mywidget.h"#include <QStringListModel> #include <QStringList> #include <QListWidget> #include <QTableWidget> #include <QTreeWidget> #include <QTableWidgetItem> #include <QListWidgetItem> #include <QTreeWidgetItem> #include <QVBoxLayout>MyView::MyView(QWidget *parent):QWidget(parent) {listWidget = new QListWidget(this);tableWidget = new QTableWidget(3, 4, this);treeWidget = new QTreeWidget(this);QStringList data;data << "ID" << "Name" << "Age" << "Sex";listWidget->addItem(new QListWidgetItem(QString(tr("ID"))));listWidget->addItem(new QListWidgetItem(QString(tr("Name"))));listWidget->addItems(data);new QListWidgetItem(QString(tr("ID")), listWidget);tableWidget->setHorizontalHeaderLabels(data);tableWidget->setItem(2, 3, new QTableWidgetItem(QString(tr("0001"))));tableWidget->setItem(1, 0, new QTableWidgetItem(QString(tr("0002"))));QStringList headers;headers << "Name" << "Number";treeWidget->setHeaderLabels(headers);QTreeWidgetItem *root = new QTreeWidgetItem(treeWidget, QStringList() << "Root 0" << "0");QTreeWidgetItem *left0 = new QTreeWidgetItem(root, QStringList() << "Left0 0" << "0");new QTreeWidgetItem(left0, QStringList() << "Left0 1" << "1");QTreeWidgetItem *root1 = new QTreeWidgetItem(treeWidget, QStringList() << "Root 1" << "1");new QTreeWidgetItem(root1, QStringList() << "Left1 0" << "0");QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(listWidget);layout->addWidget(tableWidget);layout->addWidget(treeWidget);setLayout(layout);}QListWidget類可以使用addItem(QListWidgetItem *)函數添加,可以使用addItems(QStringList &)函數添加,也可以使用new QListWidget(QString &, QListWidget *parent)進行添加。默認都是添加到列表的尾端。
QTableWidget類使用setItem(int row, int column, QTableWidgetItem *)函數進行添加,即在表格的(row, column)處添加QTableWidgetItem *;
QTreeWidget類使用new QTreeWidgetItem(QTreeWidgetItem *parent, QStringList &)函數進行添加,因為樹狀結構是層次結構,所以在添加的時候需要指出要添加的那個位置的根節點指針。
運行的結果如圖:
總結
以上是生活随笔為你收集整理的Qt学习笔记-----QListWidget,QTableWidget和QTreeWidget的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt学习笔记-----Model/Vie
- 下一篇: Qt学习笔记-----Model/Vie