欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

Qt学习笔记-----QListWidget,QTableWidget和QTreeWidget

发布时间:2024/4/19 c/c++ 64 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。