QT基础 - 多元素控件 && 容器类控件

目录

[一. QListWidget](#一. QListWidget)

[二. QTableWidget](#二. QTableWidget)

[三. QTreeWidget](#三. QTreeWidget)

[四. QGroupBox](#四. QGroupBox)

[五. QTabWidget](#五. QTabWidget)

[六. 总结](#六. 总结)


一. QListWidget

QListWidget 是 Qt 中的一个列表控件。

主要特点和功能包括:

  • 可以方便地添加、删除和管理列表项。
  • 每一个列表项可以包含文本、图标等信息。
  • 支持用户通过点击等方式进行列表项的选择操作。
  • 可以通过信号与槽机制与其他控件或代码进行交互,例如当选择项发生变化时发出信号。
  • 提供了一些方法用于获取当前选中的项、项的数量等。

它在很多应用场景中都非常有用,比如显示一系列选项、列表数据等。比如在一个音乐播放器中,可以用它来显示歌曲列表;在一个设置界面中,可以用它来列出各种可配置的选项。

属性

  • count:列表项的数量。

  • currentRow:当前选中项的行索引。
    方法

  • addItem:添加一个列表项。

  • insertItem:在指定位置插入一个列表项。

  • clear:清空列表。

  • item:获取指定索引处的列表项。

  • currentItem:获取当前选中的列表项。

示例代码

cpp 复制代码
#include <QApplication>
#include <QListWidget>
#include <QWidget>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;

    QListWidget listWidget(&window);

    listWidget.addItem("选项 1");
    listWidget.addItem("选项 2");
    listWidget.addItem("选项 3");

    window.show();

    return app.exec();
}

效果图:

二. QTableWidget

QTableWidget 是 Qt 中的表格控件。

它具有以下主要特点和功能:

  • 数据展示:以表格形式清晰地呈现多行多列的数据。
  • 单元格编辑:允许用户直接在单元格中编辑内容。
  • 表头设置:可自定义表头的标签和样式。
  • 行列操作:能方便地添加、删除行和列。
  • 单元格样式:可以设置单元格的颜色、字体等样式。
  • 数据交互:可以与其他控件或代码进行交互,根据表格数据执行相应操作。

在实际应用中,QTableWidget 常用于显示和编辑结构化的数据,比如数据库查询结果的展示、电子表格式的数据录入界面等。例如,在一个库存管理系统中,可以用它来展示商品的详细信息列表;在一个数据分析工具中,可以用它来呈现统计数据的表格。

属性

  • rowCount:行数。

  • columnCount:列数。

  • currentRow:当前选中行。
    方法

  • setRowCount:设置行数。

  • setColumnCount:设置列数。

  • insertRow:插入行。

  • insertColumn:插入列。

  • setItem:设置单元格的项。

  • item:获取单元格的项。

示例代码

cpp 复制代码
#include <QApplication>
#include <QTableWidget>
#include <QWidget>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;

    QTableWidget tableWidget(&window);

    tableWidget.setRowCount(3);
    tableWidget.setColumnCount(2);

    QTableWidgetItem *item1 = new QTableWidgetItem("数据 1");
    tableWidget.setItem(0, 0, item1);

    QTableWidgetItem *item2 = new QTableWidgetItem("数据 2");
    tableWidget.setItem(0, 1, item2);

    window.show();

    return app.exec();
}

效果图:

三. QTreeWidget

QTreeWidget 是 Qt 中的树状结构控件。

主要特点如下:

  • 层次化展示:可以清晰地呈现具有层次关系的数据或结构。
  • 节点添加与管理:方便地添加、删除和编辑树节点。
  • 节点样式:可自定义节点的显示样式,如文本、图标等。
  • 展开与折叠:节点可以展开或折叠,便于用户查看和管理不同层次的内容。
  • 选择机制:支持节点的选择操作,并可获取当前选中的节点。
  • 信号与槽:与其他控件一样,可以通过信号与槽机制进行交互。

它常用于表示具有层次结构的信息,比如文件系统结构、组织结构图、分类目录等。例如,在一个资源管理器中,用它来展示文件夹和文件的层次关系;在一个项目管理工具中,可使用它来呈现项目的不同模块和子模块的结构。

属性

  • columnCount:列数。

  • headerLabels:表头标签。

  • itemsExpandable:项目是否可展开。

  • animated:是否启用动画。

  • allColumnsShowFocus:项目是否应使用所有列显示键盘焦点。

  • wordWrap:文本自动换行策略。
    方法

  • addTopLevelItem:添加顶层项目。

  • insertTopLevelItem:在指定位置插入顶层项目。

  • takeTopLevelItem:移除顶层项目。

  • topLevelItemCount:获取顶层项目数量。

  • itemAt:获取指定坐标处的项目。

示例代码

cpp 复制代码
#include <QApplication>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QWidget>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;

    QTreeWidget treeWidget(&window);

    // 设置列数和表头标签
    treeWidget.setColumnCount(2);
    treeWidget.setHeaderLabels(QStringList() << "名称" << "描述");

    // 添加顶层节点
    QTreeWidgetItem *item1 = new QTreeWidgetItem();
    item1->setText(0, "类别 1");
    item1->setText(1, "这是类别 1 的描述");
    treeWidget.addTopLevelItem(item1);

    QTreeWidgetItem *item2 = new QTreeWidgetItem();
    item2->setText(0, "类别 2");
    item2->setText(1, "这是类别 2 的描述");
    treeWidget.addTopLevelItem(item2);

    // 为类别 1 添加子节点
    QTreeWidgetItem *subItem1 = new QTreeWidgetItem(item1);
    subItem1->setText(0, "子项 1");
    subItem1->setText(1, "子项 1 的描述");

    QTreeWidgetItem *subItem2 = new QTreeWidgetItem(item1);
    subItem2->setText(0, "子项 2");
    subItem2->setText(1, "子项 2 的描述");

    window.show();

    return app.exec();
}

效果图:

四. QGroupBox

QGroupBox 是一个用于对相关控件进行分组显示的容器控件。

主要有以下特点:

  • 分组功能:将相关的一组控件集中在一个区域内,在视觉上形成一个分组,使界面布局更清晰、有条理。
  • 标题显示 可以设置一个标题来描述该组的功能或性质。
  • 样式设置 可以对整个组框的外观进行一定的样式设置,如背景颜色、边框样式等。
  • 布局管理 组框内可以放置其他控件,并可以使用各种布局方式来安排这些控件的位置。

它通常用于将具有相似功能或逻辑相关的控件组合在一起,方便用户理解和操作。比如在设置界面中,将不同类别的设置项分别放在不同的组框内,如显示设置组、声音设置组等,让界面更加整洁和易于理解。

属性

  • title:组框的标题。

  • flat:是否为扁平样式。
    方法

  • setTitle:设置标题。

  • setFlat:设置扁平样式。

示例代码

cpp 复制代码
#include <QApplication>
#include <QGroupBox>
#include <QWidget>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;

    QGroupBox groupBox(&window);
    groupBox.setTitle("我的分组");

    window.show();

    return app.exec();
}

效果图:

五. QTabWidget

QTabWidget 主要用于创建选项卡式界面,它允许用户在多个页面或视图之间进行切换。

它的主要特点和功能包括:

  • 选项卡布局:以选项卡的形式组织多个页面或面板。
  • 页面切换:用户可以通过点击不同的选项卡轻松在各个页面之间进行切换。
  • 内容隔离:每个选项卡可以包含独立的控件和布局,实现功能的分区。
  • 可定制性:可以设置选项卡的标题、图标、位置等属性。
  • 动态添加和删除:能够在运行时动态地添加或删除选项卡及相关内容。

在实际应用中,QTabWidget 常用于构建具有多个功能模块且需要方便切换查看的界面。比如在一个复杂的设置界面中,可以将不同类别的设置放在不同的选项卡中;在一些多文档编辑工具中,每个文档可以在单独的选项卡中显示。它为用户提供了一种简洁、高效的界面组织方式。

属性

  • currentIndex:当前显示的选项卡索引。

  • tabPosition:选项卡的位置(如顶部、底部等)。

  • tabsClosable:选项卡是否可关闭。
    方法

  • addTab:添加一个选项卡。

  • insertTab:在指定位置插入一个选项卡。

  • removeTab:移除指定选项卡。

  • setCurrentIndex:设置当前选项卡索引。

示例代码:

cpp 复制代码
#include <QApplication>
#include <QTabWidget>
#include <QLabel>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);

    QTabWidget tabWidget;

    QLabel *label1 = new QLabel("这是第一个选项卡的内容");
    QLabel *label2 = new QLabel("这是第二个选项卡的内容");

    tabWidget.addTab(label1, "选项卡 1");
    tabWidget.addTab(label2, "选项卡 2");

    tabWidget.show();

    return a.exec();
}

效果图:

六. 总结

QListWidget

  • 用于显示一个可滚动的列表项。
  • 方便用户进行列表项的添加、删除、选择等操作。

QTableWidget

  • 呈现一个表格结构。
  • 可以设置行和列的数量、表头信息等,适合展示二维数据。

QTreeWidget

  • 实现树状结构的展示。
  • 可用于层次化数据的呈现,如文件系统结构等。

QGroupBox

  • 对相关控件进行分组,提供一个视觉上的分组效果。
  • 常用于将相关功能的控件组合在一起。

QTabWidget

  • 提供选项卡式的界面布局。
  • 用户可以通过切换选项卡来查看不同的内容或功能页面。
相关推荐
VBA63374 分钟前
VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
开发语言
轩辰~6 分钟前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
小_太_阳15 分钟前
Scala_【1】概述
开发语言·后端·scala·intellij-idea
向宇it15 分钟前
【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
开发语言·unity·c#·编辑器·游戏引擎
古希腊掌管学习的神1 小时前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
赵钰老师1 小时前
【R语言遥感技术】“R+遥感”的水环境综合评价方法
开发语言·数据分析·r语言
就爱学编程1 小时前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
Oneforlove_twoforjob1 小时前
【Java基础面试题025】什么是Java的Integer缓存池?
java·开发语言·缓存
emoji1111111 小时前
前端对页面数据进行缓存
开发语言·前端·javascript
每天都要学信号2 小时前
Python(第一天)
开发语言·python