Qt QTreeWidget 详解[通俗易懂]

Qt QTreeWidget 详解[通俗易懂]一.基础设置1.添加顶层节点//添加顶层节点QTreeWidgetItem*topItem1=newQTreeWidgetItem(ui->treeWidget);topItem1->setText(0,”百度”);ui->treeWidget->addTopLevelItem(topItem1);2.设置表头隐藏,展开所有项//隐藏表头ui->treeWidget->setHeade.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一.常用API设置

1.添加顶层节点

    //添加顶层节点
    QTreeWidgetItem *topItem1 = new QTreeWidgetItem(ui->treeWidget);
    topItem1->setText(0,"百度");
    ui->treeWidget->addTopLevelItem(topItem1);

2.设置表头隐藏,展开所有项

    //隐藏表头
    ui->treeWidget->setHeaderHidden(true);
    //设置展开
    ui->treeWidget->expandAll();

3.顶层节点添加子节点

    QTreeWidgetItem *item11 = new QTreeWidgetItem(topItem1);
    item11->setText(0,"研发部");
    QTreeWidgetItem *item12 = new QTreeWidgetItem(topItem1);
    item12->setText(0,"销售部");
    QTreeWidgetItem *item13 = new QTreeWidgetItem(topItem1);
    item13->setText(0,"人事部");

4.节点可以带一些数据,使用setData()这个接口

    //设置数据,可以带多种数据
    item11->setData(0,Qt::UserRole,100/*人员数量*/);
    item11->setData(0,Qt::UserRole+1,"李彦宏"/*负责人名字*/);

    //获得数据
    item11->data(0,Qt::UserRole).toInt();
    item11->data(0,Qt::UserRole+1).toString();

5.节点可以设置自定义类型,设置图标、flags、文本

//自定义枚举
enum NodeType
{
    ROOT = 0,
    SON 
};

QTreeWidgetItem *item = new QTreeWidgetItem(ROOT);
//item->setIcon();
//item->setText();
//item->setFlags();

二.设置带checkBox

    QTreeWidgetItem *topItem2 = new QTreeWidgetItem(ui->treeWidget);
    topItem2->setText(0,"腾讯");
    topItem2->setCheckState(0,Qt::Checked);
    ui->treeWidget->addTopLevelItem(topItem2);

    QTreeWidgetItem *item21 = new QTreeWidgetItem(topItem2);
    item21->setText(0,"研发部");
    item21->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item22 = new QTreeWidgetItem(topItem2);
    item22->setText(0,"销售部");
    item22->setCheckState(0,Qt::Checked);

    QTreeWidgetItem *item23 = new QTreeWidgetItem(topItem2);
    item23->setText(0,"人事部");
    item23->setCheckState(0,Qt::Checked);

简单的响应一下点击信号,当顶层节点选中,下面的所有子节点全选中

    connect(ui->treeWidget,&QTreeWidget::itemClicked,this,
            &Form::slotClicked);

    void Form::slotClicked(QTreeWidgetItem *item, int column)
    {
        //简单响应一下选中状态槽函数
        for (int i=0; i<item->childCount(); i++)
        {
           QTreeWidgetItem *pChildItem = item->child(i);
           pChildItem->setCheckState(0,item->checkState(0));
        }
    }

三.右键菜单

    //打开右键菜单属性
    ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);

    //右键菜单
    m_menu = new QMenu(ui->treeWidget);
    m_menu->addAction("添加");
    m_menu->addAction("删除");

    //响应右键菜单信号槽
    connect(ui->treeWidget,&QTreeWidget::customContextMenuRequested,
            this,&Form::slotMenuPopup);
    
    void Form::slotMenuPopup(const QPoint &pos)
    {
        m_menu->exec(ui->treeWidget->mapToGlobal(pos));
    }

 四.设置qss

 这里简单设置一下背景色,展开/合并时的图标,item的一些设置,仅供参考。

const QString styles = "QTreeView\
{\
    background-color: #5B677A;\
    font-size:17px;\
    color: white;\
}\
QTreeView::item:hover\
{\
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);\
    border: 1px solid #bfcde4;\
}\
QTreeView::item:hover\
{\
    background: rgb(69, 187, 217);\
}\
QTreeView::item:selected:active\
{\
    background: rgb(63, 147, 168);\
}\
QTreeView::item:selected:!active\
{\
    background: rgb(63, 147, 168);\
}\
QTreeView::branch\
{\
    background:#5B677A;\
}\
QTreeView::branch:has-children:!has-siblings:closed,QTreeView::branch:closed:has-children:has-siblings\
{\
    border-image: none;\
    background:#5B677A;\
    image: url(image/Folder-1.png);\
}\
QTreeView::branch:open:has-children:!has-siblings,QTreeView::branch:open:has-children:has-siblings\
{\
    border-image: none;\
    background:#5B677A;\
    image: url(image/Open-Folder.png);\
}";
调用ui->treeWidget->setStyleSheet(styles);就行了

五.运行效果

Qt QTreeWidget 详解[通俗易懂]

六.源码

 QTreeWidget详细设置_qtreewidget-C/C++文档类资源-CSDN下载

七.多列树

Qt QTreeWidget 详解[通俗易懂]

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

const QString sstyle = "\
QHeaderView::section\
{\
    background-color: white;\
}";

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    QStringList strList;
    strList<<"名称"<<"年龄"<<"性别";
    ui->treeWidget->setHeaderLabels(strList);
    ui->treeWidget->header()->setStyleSheet(sstyle);

    QTreeWidgetItem *item1 = new QTreeWidgetItem(QStringList()<<"七年级");
    ui->treeWidget->addTopLevelItem(item1);

    QTreeWidgetItem *item11 = new QTreeWidgetItem(QStringList()<<"小涨"<<"13"<<"男");
    item1->addChild(item11);
    QTreeWidgetItem *item12 = new QTreeWidgetItem(QStringList()<<"小红"<<"14"<<"女");
    item1->addChild(item12);
    QTreeWidgetItem *item13 = new QTreeWidgetItem(QStringList()<<"小丽"<<"13"<<"女");
    item1->addChild(item13);

    QTreeWidgetItem *item2 = new QTreeWidgetItem(QStringList()<<"八年级");
    ui->treeWidget->addTopLevelItem(item2);

    QTreeWidgetItem *item21 = new QTreeWidgetItem(QStringList()<<"小涨"<<"13"<<"男");
    item2->addChild(item21);
    QTreeWidgetItem *item22 = new QTreeWidgetItem(QStringList()<<"小红"<<"14"<<"女");
    item2->addChild(item22);
    QTreeWidgetItem *item23 = new QTreeWidgetItem(QStringList()<<"小丽"<<"13"<<"女");
    item2->addChild(item23);

    QTreeWidgetItem *item3 = new QTreeWidgetItem(QStringList()<<"九年级");
    ui->treeWidget->addTopLevelItem(item3);

    QTreeWidgetItem *item31 = new QTreeWidgetItem(QStringList()<<"小涨"<<"13"<<"男");
    item3->addChild(item31);
    QTreeWidgetItem *item32 = new QTreeWidgetItem(QStringList()<<"小红"<<"14"<<"女");
    item3->addChild(item32);
    QTreeWidgetItem *item33 = new QTreeWidgetItem(QStringList()<<"小丽"<<"13"<<"女");
    item3->addChild(item33);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
    qDebug()<<item->text(0);
    qDebug()<<item->text(1);
    qDebug()<<item->text(2);
}

八.相关推荐

QTreeView详解Qt QTreeWidget 详解[通俗易懂]https://blog.csdn.net/wzz953200463/article/details/123643823?spm=1001.2014.3001.5502

QTableWidget详解Qt QTreeWidget 详解[通俗易懂]https://blog.csdn.net/wzz953200463/article/details/110004261

QTableView详解Qt QTreeWidget 详解[通俗易懂]https://blog.csdn.net/wzz953200463/article/details/123645541?spm=1001.2014.3001.5502

QListWidget详解Qt QTreeWidget 详解[通俗易懂]https://blog.csdn.net/wzz953200463/article/details/109648247

QListView详解Qt QTreeWidget 详解[通俗易懂]https://blog.csdn.net/wzz953200463/article/details/123646413?spm=1001.2014.3001.5502

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186956.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 八皇后问题递归算法思想_迷宫在数据结构中的地位

    八皇后问题递归算法思想_迷宫在数据结构中的地位一、迷宫回溯问题1.问题一个7*8的数组模拟迷宫,障碍用1表示,通路使用0表示,给定起点(1,1)和终点(6,5),要求给出起点到终点的通路2.解题思路首先,我们需要给程序一个寻向的基本策略,

    2022年8月16日
    5
  • 基于qt的简单小游戏_中国象棋单机版2,0

    基于qt的简单小游戏_中国象棋单机版2,0最近对Qt这个跨平台C++图形应用程序框架很感兴趣,闲暇时间多学了一下,收获很多,也踩了不少坑,在这里记录一下,分享心得。Qt的安装安装Qt并不麻烦,就是网速有点慢。推荐使用国内镜像代理下载。首先进入Qt官网,在TryQt处点击DownloadQt,填完基本信息后,点击提交就可以下载Qt下载器了。当然,你也可以直接去国内镜像站上下载Qt下载器。打开Qt下载器,注册Qt账户,并登录,同意协议。若要使用国内镜像代理,点击左下角的配置图标。然后从百度上选择

    2022年8月29日
    2
  • C#获取当前系统时间

    C#获取当前系统时间
    --DateTime数字型System.DateTimecurrentTime=newSystem.DateTime();取当前年月日时分秒currentTime=System.DateTime.Now;取当前年int年=currentTime.Year;取当前月int月=currentTime.Month;取当前日int日=currentTime.Day;取当前时int时=currentTim

    2022年10月18日
    3
  • PHP正则表达式_python正则匹配字母

    PHP正则表达式_python正则匹配字母一、正则表达式语法(Perl风格)1、模式规则  /php/字符串前后加上两条斜杠即可2、匹配函数  preg_match(‘/php/’,php)  参数1模式  参数2字符串二、正则表达式中的元素介绍  1、正则表达式中包含三种元素分别为:量词、元字符、修饰符  2、前导字符串:就是符号前面的一个字符或字符串量词…

    2025年8月22日
    2
  • GO分析-GOseq的使用教程[通俗易懂]

    GO分析-GOseq的使用教程[通俗易懂]GOseq的介绍GOseq是一个R包,用于寻找GOterms,即基因富集分析。此方法基于Walleniusnon-centralhyper-geometricdistribution。相对

    2022年8月6日
    9
  • 如何查询手机当前基站编号信息呢_基站实测

    如何查询手机当前基站编号信息呢_基站实测Android:拨号*#*#4636#*#*进入手机信息工程模式后查看。iPhone:拨号*3001#12345#*进入FieldTest,LAC(MMInfo>ServingPLMN),3Gcellid(UMTSCellEnvironment>UMTSRRInfo),2Gcellid(GSMCellEnvironment>GSMCellInfo>

    2025年7月5日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号