Qt 控件学习指南

news/2025/1/15 23:06:37/

Qt基础

项目控件组(Item Widgets) 包括:

- List Widget: 清单控件

- Tree Widget: 树形控件

- Table Widget: 表控件

创建具有复选框的树形控件的步骤:

1. 新建Qt Widgets Application项目,基类选择"QWidget"。

2. 在界面设计器中拖曳一个QTreeWidget控件。

3. 在头文件"widget.h"中添加必要的代码。

4. 在源文件"widget.cpp"中实现初始化函数init()和槽函数treeitemChanged()。

示例代码如下:

```cpp

// widget.h

#include <QTreeWidget>

class Widget : public QWidget

{

    Q_OBJECT

public:

    void init();

    void updateParentItem(QTreeWidgetItem* item);

public slots:

    void treeItemChanged(QTreeWidgetItem* item, int column);

private:

    QTreeWidget* treeWidget;

};

// widget.cpp

Widget::Widget(QWidget *parent) : QWidget(parent)

{

    ui->setupUi(this);

    init();

    connect(ui->treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(treeItemChanged(QTreeWidgetItem*, int)));

}

void Widget::init()

{

    ui->treeWidget->clear();

    // 第一个分组

    QTreeWidgetItem* group1 = new QTreeWidgetItem(ui->treeWidget);

    group1->setText(0, "group1");

    group1->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);

    group1->setCheckState(0, Qt::Unchecked);

    QTreeWidgetItem* subItem1 = new QTreeWidgetItem(group1);

    subItem1->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);

    subItem1->setText(0, "subItem1");

    subItem1->setCheckState(0, Qt::Unchecked);

    // 第二个分组

    QTreeWidgetItem* group2 = new QTreeWidgetItem(ui->treeWidget);

    group2->setText(0, "group2");

    group2->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);

    group2->setCheckState(0, Qt::Unchecked);

    QTreeWidgetItem* subItem2 = new QTreeWidgetItem(group2);

    subItem2->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);

    subItem2->setText(0, "subItem2");

    subItem2->setCheckState(0, Qt::Unchecked);

}

void Widget::treeItemChanged(QTreeWidgetItem* item, int column)

{

    // 槽函数的具体实现

}

```

这样您就可以按照以上步骤和代码实现具有复选框的树形控件界面。


http://www.ppmy.cn/news/1521907.html

相关文章

C# WPF 读取西门子S7系列PLC

在C# WPF应用程序中&#xff0c;与西门子S7系列PLC进行通信是一个常见的需求&#xff0c;尤其是在工业自动化领域。以下是三种实现WPF上位机与西门子S7系列PLC通信同步的方式&#xff0c;每种方式都提供了代码实例、优缺点和使用场景。 1. 使用S7.Net库 代码示例&#xff1a; c…

【C-LeetCode】977 有序数组的平方

一、暴力解法 测试代码 #include <stdio.h> #include <stdlib.h>int* sortedSquares(int* nums, int numsSize, int* returnSize); void print(int *nums, int len);int main() {int nums[] { -19, -10, -7, -4, -3, 0, 1, 3, 6, 7, 9, 10 };int len sizeof(nums…

LAN变压器的DCR

在变压器技术中&#xff0c;DCR代表直流电阻&#xff08;DC Resistance&#xff09;。它是变压器线圈在直流条件下测得的电阻值&#xff0c;通常用来评估变压器的质量和效率。直流电阻是线圈材料和尺寸的一个函数&#xff0c;它与变压器线圈的发热量和功率损耗直接相关。在变压…

Web3与AI的融合:开启去中心化应用的新纪元

在数字科技不断发展的今天&#xff0c;Web3与人工智能&#xff08;AI&#xff09;的融合正引领去中心化应用&#xff08;DApps&#xff09;的新纪元。这种结合不仅扩展了去中心化技术的应用场景&#xff0c;还为智能应用提供了更加高效和创新的解决方案。本文将深入探讨Web3与A…

Pyspark中catalog的作用与常用方法

文章目录 Pyspark catalog用法catalog 介绍cache 缓存表uncache 清除缓存表cleanCache 清理所有缓存表createExternalTable 创建外部表currentDatabase 返回当前默认库tableExists 检查数据表是否存在&#xff0c;包含临时视图databaseExists 检查数据库是否存在dropGlobalTemp…

React-CSS

1. React中的样式 React并没有像Vue那样提供特定的区域给我们编写CSS代码 所以你会发现在React代码中, CSS样式的写法千奇百怪 2. 内联样式 内联样式的优点: 内联样式, 样式之间不会有冲突 可以动态获取当前state中的状态 内联样式的缺点&#xff1a; 写法上都需要使用驼峰标…

前端框架有哪些

前端框架有哪些 前端框架是用来帮助开发者构建用户界面和交互的库或工具。以下是一些流行的前端框架&#xff1a; React: 由 Facebook 维护的一个声明式、高效且灵活的 JavaScript 库&#xff0c;用于构建用户界面。 Vue.js: 一个渐进式 JavaScript 框架&#xff0c;用于构建…

python数值误差

最近在用fenics框架跑有限元代码&#xff0c;其中有一个部分是把在矩阵里定义的初始值&#xff0c;赋值到有限元空间里&#xff0c;这就涉及到了初始矩阵和有限元空间坐标的转化&#xff0c;部分代码如下 for i in range(len(dof_coordinates)):# x, y dof_coordinates[i…