QT 项目视图(QListView&QTreeView&QTableView)和项目部件(QListWidget&QTreeWidget&QTableWidget)详解-2

简介: QT 项目视图(QListView&QTreeView&QTableView)和项目部件(QListWidget&QTreeWidget&QTableWidget)详解

QT 项目视图(QListView&QTreeView&QTableView)和项目部件(QListWidget&QTreeWidget&QTableWidget)详解-1

https://developer.aliyun.com/article/1507899


二、Qt 项目部件(Item Widgets)

控件名称依次解释如下:

  • List Widget : 清单控件
  • Tree Widget : 树形控件
  • Table Widget : 表控件


1.QListWidget

QListWidget是一个用于显示项目列表的Qt控件,每个项目可以包含文本、图像和小部件。它常用于显示媒体播放列表、文件列表和日历等应用程序中。QListWidget提供了许多方法和信号来管理和监视列表中的项目,例如添加、删除、选择、排序和拖放。同时它也支持多种视图模式,如列表模式、图标模式和流模式,可以根据应用程序的需要来选择不同的视图模式。


案例分析:


widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
 
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
 
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

main.cpp

#include "widget.h"
 
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
#include "widget.h"
#include "ui_widget.h"
 
#include <QListWidget>
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    QListWidgetItem *qitem = new QListWidgetItem("程序员小佳");
    ui->listWidget->addItem(qitem);
    qitem->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); // Alignment(对准) 将上面字中心对准
 
    QStringList slist;
    slist<<"程序员小佳牛逼";
    slist<<"程序员小佳最漂亮";
 
    ui->listWidget->addItems(slist);
}
 
Widget::~Widget()
{
    delete ui;
}
 


编译执行结果:

2.QTreeWidget


QTreeWidget是一个用于显示结构化数据的控件,它可以以树形结构展示数据,类似于Windows资源管理器或Mac Finder中的文件夹结构。QTreeWidget可以用于显示层次结构数据,例如文件系统、组织机构、分类标签等。每个节点可以包含子节点,可以展开或折叠来查看或隐藏子节点。通过使用QTreeWidget,可以方便地实现树形结构的展示和操作。


案例分析:


widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
 
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
 
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H


main.cpp

#include "widget.h"
 
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
 
#include <QTreeWidget>
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    // 1:添加第一级节点
    QTreeWidgetItem *topItem1 = new QTreeWidgetItem(ui->treeWidget);
    topItem1->setText(0,"佛山大学");
    topItem1->setCheckState(0,Qt::Checked);
    ui->treeWidget->addTopLevelItem(topItem1);
 
    // 隐藏表头
    ui->treeWidget->setHeaderHidden(true);
    // 展开节点
    ui->treeWidget->expandAll();
 
    // 2:二级节点添加到一级节点的topItem1
    QTreeWidgetItem *item11 = new QTreeWidgetItem(topItem1);
    item11->setText(0,"佛山大学电信学院");
    item11->setCheckState(0,Qt::Checked);
 
    QTreeWidgetItem *item12 = new QTreeWidgetItem(topItem1);
    item12->setText(0,"佛山大学机电学院");
    item12->setCheckState(0,Qt::Checked);
 
    QTreeWidgetItem *item13 = new QTreeWidgetItem(topItem1);
    item13->setText(0,"佛山大学外国语学院");
    item13->setCheckState(0,Qt::Checked);
 
    // 1:添加第一级节点
    QTreeWidgetItem *topItem2 = new QTreeWidgetItem(ui->treeWidget);
    topItem2->setText(0,"广东财经大学");
    topItem2->setCheckState(0,Qt::Checked);
    ui->treeWidget->addTopLevelItem(topItem2);
 
    // 2:二级节点添加到一级节点的topItem1
    QTreeWidgetItem *item14 = new QTreeWidgetItem(topItem2);
    item14->setText(0,"广东财经大学电信学院");
    item14->setCheckState(0,Qt::Checked);
 
    QTreeWidgetItem *item15 = new QTreeWidgetItem(topItem2);
    item15->setText(0,"广东财经大学机电学院");
    item15->setCheckState(0,Qt::Checked);
 
    QTreeWidgetItem *item16 = new QTreeWidgetItem(topItem2);
    item16->setText(0,"广东财经大学外国语学院");
    item16->setCheckState(0,Qt::Checked);
}
 
Widget::~Widget()
{
    delete ui;
}
 

编译执行结果:

3.QTableWidget

QTableWidget是Qt框架中的一种控件,用于显示二维表格数据。它可以支持多种数据类型,包括字符串、整数、浮点数、布尔值和图像等。QTableWidget被广泛应用于表格数据的显示和编辑,例如电子表格、数据库表、日历等应用场景。QTableWidget提供了丰富的功能,例如自动排序、行列选择、单元格编辑、复制/粘贴、拖拽等。同时,QTableWidget还支持多种样式、颜色和字体等设置,以让开发者能够灵活定制表格外观和行为。


案例分析:


widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
 
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
 
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

main.cpp

#include "widget.h"
 
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
 
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    // 设置表格行数和列数
    ui->tableWidget->setRowCount(3);
    ui->tableWidget->setColumnCount(2);
 
    // 设置水平表头
    QStringList slist;
    slist<<"学号"<<"考试分数";
    ui->tableWidget->setHorizontalHeaderLabels(slist);
 
    QList<QString> strno;
    strno<<"666"<<"777"<<"888";
    QList<QString> strscore;
    strscore<<"520"<<"530"<<"540";
 
    // 通过循环为表格赋值
    for(int i=0;i<3;i++){
        int data = 0;
        QTableWidgetItem *pitem = new QTableWidgetItem(strno.at(i));
        ui->tableWidget->setItem(i,data++,pitem);
        ui->tableWidget->setItem(i,data,new QTableWidgetItem(strscore.at(i)));
    }
 
}
 
Widget::~Widget()
{
    delete ui;
}
 

编译执行结果:

相关文章
|
6月前
|
监控 数据可视化 Linux
Qt Model&View&Delegate(模型-视图-代理) 介绍和使用
Qt Model&View&Delegate(模型-视图-代理) 介绍和使用
Qt Model&View&Delegate(模型-视图-代理) 介绍和使用
|
6月前
|
索引
【qt】初识模型和视图2
【qt】初识模型和视图
26 0
|
6月前
|
数据库 索引
【qt】初识模型和视图1
【qt】初识模型和视图
30 0
|
6月前
【qt】QTableWidget 表格组件3
【qt】QTableWidget 表格组件
73 0
|
6月前
【qt】QTableWidget 表格组件2
【qt】QTableWidget 表格组件
66 0
|
6月前
【qt】QTableWidget 表格组件1
【qt】QTableWidget 表格组件
49 0
|
6月前
|
索引 Windows
【qt】QTreeWidget 树形组件2
【qt】QTreeWidget 树形组件
55 0
|
6月前
|
C++
【qt】QTreeWidget 树形组件1
【qt】QTreeWidget 树形组件
64 0
|
6月前
【qt】QListWidget 组件3
【qt】QListWidget 组件
26 0
|
6月前
【qt】QListWidget 组件2
【qt】QListWidget 组件
53 0
下一篇
无影云桌面