Qt系列文章目录

文章目录

  • Qt系列文章目录
  • 前言
  • 主要API
  • 示例
    • 1.头文件:
    • 2.实现文件
  • 二、源码下载

前言

官方文档
QTreeWidget类是一个方便的类,它提供了一个标准tree小部件与一个典型的基于项目所使用的接口类似QListView Qt 3类。这个类是基于Qt的模型/视图的体系结构,使用一个默认的模型项目,每一个都是一个QTreeWidgetItem。      开发人员不需要模型/视图框架的灵活性可以使用这个类来创建简单的分层列表。更灵活的方法是结合QTreeView标准项目模型。这允许存储的数据是与它的表示分离。 在其最简单的形式,一个tree小部件可以构建在以下方式:

QTreeWidget *treeWidget = new QTreeWidget();
treeWidget->setColumnCount(1);
QList<QTreeWidgetItem *> items;
for (int i = 0; i < 10; ++i)items.append(new QTreeWidgetItem(static_cast<QTreeWidget *>(nullptr), QStringList(QString("item: %1").arg(i))));
treeWidget->insertTopLevelItems(0, items);


项目可以被添加到树小部件之前,列数必须设置与setColumnCount ()。这允许每个条目有一个或多个标签或其他装饰品。可以找到使用的列数与columnCount()函数。      树可以有一个头,它包含一个部分每一列的小部件。是简单的设置标签为每个部分提供一个字符串列表与setHeaderLabels(),但可以构造一个自订标头QTreeWidgetItem和插入到树setHeaderItem()函数。      树中的项目可以根据预定义的排序顺序按列排序。如果启用了排序,用户可以通过点击列标题的条目。通过调用setSortingEnabled排序可以启用或禁用()。isSortingEnabled()函数指示是否启用排序。

主要API

公共接口

主要信号槽函数

示例

运行效果

1.头文件:

#ifndef FORM_H
#define FORM_H#include <QWidget>
#include <QTreeWidgetItem>
#include <QMenu>namespace Ui {class Form;
}class Form : public QWidget
{Q_OBJECTpublic:explicit Form(QWidget *parent = 0);~Form();public Q_SLOTS:void slotClicked(QTreeWidgetItem *item, int column);void slotMenuPopup(const QPoint &);private:Ui::Form *ui;QMenu *m_menu = nullptr;
};#endif // FORM_H

2.实现文件

#include "form.h"
#include "ui_form.h"
#include <QTreeWidgetItem>
#include <QDebug>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);\
}";Form::Form(QWidget *parent) :QWidget(parent),ui(new Ui::Form)
{ui->setupUi(this);//隐藏表头ui->treeWidget->setHeaderHidden(true);//打开右键菜单属性ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);//添加顶层节点QTreeWidgetItem *topItem1 = new QTreeWidgetItem(ui->treeWidget);topItem1->setText(0,u8"角色");topItem1->setCheckState(0, Qt::Checked);ui->treeWidget->addTopLevelItem(topItem1);//右键菜单m_menu = new QMenu(ui->treeWidget);m_menu->addAction(u8"添加");m_menu->addAction(u8"删除");QTreeWidgetItem *item11 = new QTreeWidgetItem(topItem1);item11->setText(0,u8"野蛮人");item11->setCheckState(0, Qt::Checked);//设置数据,可以带多种数据item11->setData(0,Qt::UserRole,100/*人员数量*/);item11->setData(0,Qt::UserRole+1,u8"肖恩"/*负责人名字*/);//获得数据item11->data(0,Qt::UserRole).toInt();item11->data(0,Qt::UserRole+1).toString();QTreeWidgetItem *item12 = new QTreeWidgetItem(topItem1);item12->setText(0,u8"猎魔人");QTreeWidgetItem *item13 = new QTreeWidgetItem(topItem1);item13->setText(0,u8"死灵法师");QTreeWidgetItem *item14 = new QTreeWidgetItem(topItem1);item14->setText(0,u8"圣骑士");QTreeWidgetItem *item15 = new QTreeWidgetItem(topItem1);item15->setText(0,u8"女巫");QTreeWidgetItem *item16 = new QTreeWidgetItem(topItem1);item16->setText(0,u8"武行者");QTreeWidgetItem *topItem2 = new QTreeWidgetItem(ui->treeWidget);topItem2->setText(0,u8"技能");topItem2->setCheckState(0,Qt::Checked);ui->treeWidget->addTopLevelItem(topItem2);QTreeWidgetItem *item21 = new QTreeWidgetItem(topItem2);item21->setText(0,u8"旋风斩");item21->setCheckState(0,Qt::Checked);QTreeWidgetItem *item22 = new QTreeWidgetItem(topItem2);item22->setText(0,u8"狂暴冲锋");item22->setCheckState(0,Qt::Checked);QTreeWidgetItem *item23 = new QTreeWidgetItem(topItem2);item23->setText(0,u8"不灭之怒");item23->setCheckState(0,Qt::Checked);QTreeWidgetItem *item24 = new QTreeWidgetItem(topItem2);item24->setText(0,u8"疾奔");item24->setCheckState(0,Qt::Checked);QTreeWidgetItem *item25 = new QTreeWidgetItem(topItem2);item25->setText(0,u8"狂乱");item25->setCheckState(0,Qt::Checked);QTreeWidgetItem *item26 = new QTreeWidgetItem(topItem2);item26->setText(0,u8"先祖之锤");item26->setCheckState(0,Qt::Checked);QTreeWidgetItem* childItem111 = new QTreeWidgetItem(item11);childItem111->setCheckState(0, Qt::Unchecked);childItem111->setText(0, u8"装备");QTreeWidgetItem* childItem1111 = new QTreeWidgetItem(childItem111);childItem1111->setText(0, u8"头盔");QTreeWidgetItem* childItem1112 = new QTreeWidgetItem(childItem111);childItem1112->setText(0, u8"胸甲");QTreeWidgetItem* childItem1113 = new QTreeWidgetItem(childItem111);childItem1113->setText(0, u8"肩甲");QTreeWidgetItem* childItem1114 = new QTreeWidgetItem(childItem111);childItem1114->setText(0, u8"裤子");QTreeWidgetItem* childItem1115 = new QTreeWidgetItem(childItem111);childItem1115->setText(0, u8"主手");QTreeWidgetItem* childItem1116 = new QTreeWidgetItem(childItem111);childItem1116->setText(0, u8"副手");//设置展开ui->treeWidget->expandAll();ui->treeWidget->setStyleSheet(styles);  //QTreeWidgetconnect(ui->treeWidget,&QTreeWidget::itemClicked,this,&Form::slotClicked);connect(ui->treeWidget,&QTreeWidget::customContextMenuRequested,this,&Form::slotMenuPopup);}Form::~Form()
{delete ui;
}void Form::slotClicked(QTreeWidgetItem *item, int column)
{//简单响应一下选中状态槽函数int itemCount = item->childCount();for (int i=0; i<item->childCount(); i++){QTreeWidgetItem *pChildItem = item->child(i);pChildItem->setCheckState(0,item->checkState(0));}
}void Form::slotMenuPopup(const QPoint &pos)
{m_menu->exec(ui->treeWidget->mapToGlobal(pos));
}

UI

二、源码下载

源码下载地址

Qt QTreeWidget 详解相关推荐

  1. Qt Phonon详解

    Qt Phonon详解(转帖) 前言 Phonon严格来说其实非为Qt的library,Phonon原本就是KDE 4的开放原始码多媒体API,後来与Qt合并与开发,所以简单来说就是Qt使用Phono ...

  2. python制作好看的界面_【一点资讯】Python界面如何漂亮的展示树形结构,PyQt5控件之QTreeWidget详解 www.yidianzixun.com...

    前面内容,我们介绍了关于PyQt5的一些常用高级控件的使用,为了更好的便于大家理解,我们通过一些案例进行了讲解.用户接口 用Python将电子表格Excel展示在界面中,PyQt5之QTableWid ...

  3. Qt QSqlQueryModel详解

    1.功能概述 QSqlQueryModel是QSqlTableModel的父类.QSqlQueryModel封装了执行SELECT语句从数据库查询数据的功能,但是QSqlQueryModel只能作为只 ...

  4. Qt MetaObject 详解

    这个系列的几篇文章通过阅读Qt帮助文档和相关的源代码来学习研究Qt meta-object所提供的功能,及其实现的方式. Qt meta-object系统基于三个方面: 1.QObject提供一个基类 ...

  5. 《Qt 数据库详解》博客系列文章

    本文章原创于www.yafeilinux.com 转载请注明出处. 由于该系列文章图床都挂了,特下载原文博客的word版. 详细博客请点附件下载. 21-Qt数据库(一)简介 22-Qt数据库(二)添 ...

  6. Qt QList详解

    1.QList是一种表示链表的模板类. 2.QList是Qt的一种泛型容器类.它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作. 3.QList.QLinkedList ...

  7. Qt MetaObject 详解之二:QMeta数据以及数据结构信息

    如果一个类的声明中包含Q_OBJECT宏,那么qmake将为这个类生成 meta信息,这个信息在前一篇中所提到的moc文件中.这一篇通过解析这个一个示例moc文件来阐述这些meta信息的存储方式和格式 ...

  8. Qt QVector 详解:从底层原理到高级用法

    目录标题 引言:QVector的重要性与简介 QVector的常用接口 QVector和std::Vector 迭代器:遍历QVector 中的元素(Iterators: Traversing Ele ...

  9. VS中使用Qt方法详解

    在 Qt Creator 中可以使用 MSVC 编译工具对 Qt 项目进行编译.若有人比较习惯于使用 Visual Studio,或某些项目必须使用 Visual Studio,也可以在 Visual ...

最新文章

  1. vue配置文件读取_Vue+Spring Boot简单用户登录Demo实现
  2. 奠定了整个计算机科学的基础是什么,冯 诺依曼对计算机科学发展所作的贡献是什么...
  3. Excel 文件读取
  4. java json jar包_jsonobject jar包下载
  5. 实时多线程系统的日志实现
  6. tcp wireshark 过滤syn_使用 WireShark 分析 TCP/IP 三次握手 和 四次挥手
  7. jquerymobile使用技巧
  8. 2016年度 JavaScript 展望(下)
  9. su切换到oracle后怎么退出,linux下启动oralce和关闭oracle以及数据库实例化
  10. python编程(数据库操作)
  11. Java中的Collections类– java.util.Collections
  12. android native c++ 打印调用栈
  13. 使用wePE安装系统
  14. jsp代码编写简单的BBS论坛项目的总结
  15. 等级保护测评三级-安全通用要求大纲
  16. 【Python】10行代码获取海贼王最新目录
  17. 项目开发团队分配管理软件总结
  18. XOI2003赛后题解
  19. 数据分析笔记--对NBA球员数据的聚类分析(代码)
  20. 搭建tileserver-gl地图服务

热门文章

  1. C++中BitBlt的使用方法详解
  2. 2019第十届蓝桥杯省赛总结
  3. 大三Web课程设计——悬崖上的波妞(4页) HTML+CSS(可以很好的应付老师的作业)
  4. JSM之ActivityMQ
  5. (附源码)springboot学生社团管理系统 毕业设计 151109
  6. shui-执行多个window.onload
  7. 【PAC集成电机控制芯片】了解PAC集成电机控制芯片
  8. android 横向渐变颜色,Android开发之渐变色
  9. Nginx项目部署笔记
  10. 功能性与非功能性需求