一、前言

使用QT制作树形的列表菜单,需要使用QTreeWidget和QTreeWidget两个类。最终效果如图所示:

二、代码方式实现

使用代码方式实现树形菜单,首先要包含两个类库。

#include <QTreeWidget>
#include <QTreeWidgetItem>

接着创建一个QTreeWidget对象,设置相关属性。

//创建QTreeWidget对象,指定父对象
QTreeWidget *tree = new QTreeWidget(this);
//设置位置以及大小
tree->setGeometry(0,20,100,420);
//可以设置背景颜色
tree->setStyleSheet("background-color:pink;");
//设置列标题
tree->setHeaderLabel("功能导航");
//如果不想显示标题,可以隐藏
tree->setHeaderHidden(true);
//设置不同层次菜单的缩进
tree->setIndentation(10);

随后,为tree插入第一级节点菜单。

QTreeWidgetItem *item1 = new QTreeWidgetItem(tree,QStringList("病人管理"));
QTreeWidgetItem *item2 = new QTreeWidgetItem(tree,QStringList("医生管理"));
QTreeWidgetItem *item3 = new QTreeWidgetItem(tree,QStringList("营收管理"));

让我们来看看这里使用到的QTreeWidgetItem构造函数。

/*** @param : parent 关联的窗口或父节点* @param : strings 列数据,这里只有一列,不用深究* @param : type 用不到,不用管
*/
QTreeWidgetItem::QTreeWidgetItem(QTreeWidget *parent, const QStringList &strings, int type = Type)

第一级节点上去就是tree了,自然就是挂在tree下,所以第一个参数为tree。

接下来插入第二级节点。

QTreeWidgetItem *item11 = new QTreeWidgetItem(item1,QStringList("病人信息"));
QTreeWidgetItem *item12 = new QTreeWidgetItem(item1,QStringList("病床调动"));
QTreeWidgetItem *item21 = new QTreeWidgetItem(item2,QStringList("医生信息"));
QTreeWidgetItem *item22 = new QTreeWidgetItem(item2,QStringList("员工调动"));
QTreeWidgetItem *item31 = new QTreeWidgetItem(item3,QStringList("药品"));
QTreeWidgetItem *item32 = new QTreeWidgetItem(item3,QStringList("设备"));

谁是第二级节点的父节点,就挂在那一个父节点下,所以第一个参数即对应的父节点。如果想要设置更深层次的树形菜单,也是按照这个思路一步一步深入下去。

到这里节点已经设置完毕,接下来就要为节点设置图标了。

item1->setIcon(0,QIcon("M:\\pictures\\素材图\\学士帽.png"));

如上所示,设置图标需要使用QTreeWidgetItem类的setIcon方法。我们这里设计的树形菜单只有一列,因此第一个参数为0。第二个参数是QIcon类型的对象,括号里面是本地图片的路径。注意在 \ 前加一个 \ ,前一个是转义字符,后一个才是真正的 \ 。

其余节点的图标设置也相同,不再赘述。

至此,就完成了一个简单的树形菜单。

三、UI设计师界面实现

使用UI设计师界面实现会更加直观,无需敲代码,就算不懂代码的朋友也能轻松搞定。

创建一个项目(不会可见另一篇博文:https://blog.csdn.net/weixin_45138590/article/details/109189652),双击UI文件。

选择Item Widgets(Items Based)里的Tree Widget控件,拖拽一个到中间的界面窗口。

双击Tree Widget控件即可编辑列标题和设置节点。

通过上述操作,即可完成节点的设置。接着为节点设置图标:选择一个节点,点击右侧的属性,会弹出属性框,点击icon属性的Normal Off右侧的值框,点击三角形选择文件。

选择你所需要的图片就能完成图标的设置!

至此,一个简单的树形菜单就完成了!

四、QTreeWidget控件常用设置总结

//设置位置以及大小
tree->setGeometry(0,20,100,420);
//可以设置背景颜色
tree->setStyleSheet("background-color:pink;");
//设置列标题
tree->setHeaderLabel("功能导航");
//如果不想显示标题,可以隐藏
tree->setHeaderHidden(true);
//设置不同层次菜单的缩进
tree->setIndentation(10);
//设置节点之间的行距
setStyleSheet("QTreeWidget::item{""height:25px;""}");
//设置边框不可见
ui->tree->setFrameStyle(QFrame::NoFrame);
//将菜单设置为禁用状态
ui->tree->setEnabled(false);

QT学习:制作树形列表菜单相关推荐

  1. QT学习-核心类列表-33、QtTest 34、QtUiTools

    33    -    QtTest模块为Qt程序和库提供单元测试的类 34    -    QtUiTools模块提供类去操作由Qt Designer创建的窗口    -    Provides cl ...

  2. QT学习-核心类列表-30、QtSerialPort

    30    -    QtSerialPort模块提供C++类列表能访问连续的端口    -    List of C++ classes that enable access to a serial ...

  3. QT学习-核心类列表-4、Qt WebKit Widgets 5、Qt3DCore

    4    -    Qt WebKit Widgets模块提供一个C++类的网页浏览器引擎,与网页内容进行交互 5    -    Qt3DCore模块包含支持近实时的仿真系统的功能     Qt3D ...

  4. Qt学习之路之菜单打开网页

    点击菜单的选项后,可以打开本地浏览器打开一组特定的网页.不废话了,上代码. 在此,感谢博主:http://blog.sina.com.cn/liang19890820 menu_widget.h 代码 ...

  5. [QT_015]Qt学习之基于条目控件的自定义特性(拖拽+右键菜单+样式)

    本文转自:<Qt编程指南>        作者:奇先生 Qt编程指南,Qt新手教程,Qt Programming Guide 本节介绍基于条目控件的定制特性,首先介绍条目的拖拽,列表控件. ...

  6. HTML实战案例素材1:制作树形菜单页面

    实战案例素材1:制作树形菜单页面 一.完整的页面效果图 二.文本素材 我的电脑文件列表 我的电脑         本地磁盘(C:)             我的文档             我的收藏 ...

  7. html 显示视频列表,dvd光碟制作节目轨菜单布局,不要视频缩略图,只显示文件列表...

    "如何在刻录视频光盘时自定义制作菜单?实现的效果就是当光盘插入DVD影碟机播放时,首先会出现一个所有视频文件列表的菜单(节目轨菜单),就相似于音乐CD曲目表一样,不需要有视频缩略图,可通过遥 ...

  8. excel添加列下拉框票价_excel表格下拉表格添加数据-excel2017表格中怎么制作下拉菜单列表框...

    在Excel表中,如何将增加下拉菜单的选项? excel中的下拉菜单选项,就是筛选的功能,具体操作如下: 1.首先选中a.b两列数据,在"开始"选项卡上选择"筛选&quo ...

  9. Qt学习总结——飞机大战小游戏制作

    Qt学习总结--飞机大战小游戏制作 1. 需求分析 这篇文章写于2020年暑假,完成学校实训项目之后,对自己的项目实践做了一个总结,回顾整个项目的制作过程,同时也复习一下Qt的相关知识,总结项目制作过 ...

  10. layui树形菜单右键_layui树形菜单写的树形列表(treetable)

    基于layui v2.2.5的 layui-tree写了一个treetable(树形列表) 效果 1.1 收起效果图 1.2 展开效果图 1.开发预备 首先需要到layui官网https://www. ...

最新文章

  1. 三国志战略版鸿蒙梦魇,三国志战略版:双控在手天下我有,洞察震慑枪已成吴国梦魇!...
  2. Rust中Box、Rc、Arc、Cell、RefCell、Cow简介
  3. 有关linux下find和xargs的使用
  4. python 监听tcp端口_创建TCP监听_创建TCP监听_功能示例_Python SDK示例_SDK 参考_开发指南_负载均衡 - 阿里云...
  5. 华为:今年至少 3 亿台设备使用鸿蒙;增长 7%,互联网人薪资报告出炉;英特尔侵犯芯片专利被判赔偿 22 亿美元 | 极客头条...
  6. idea自动生成unit test插件
  7. odoo-OPENERP仓库各类知识详解
  8. linux 批量解压war,图文处理war包解压【搞定方式】
  9. vscode自动补全c语言_vscode代码自动补全失效
  10. 【IT之路】Docker系列-CentOS 7 64位镜像下载
  11. 破解华为电脑管家,多屏协同无法正常启动,提示 硬件解码器工作异常,请重启电脑
  12. 【Unity3D日常开发】Unity中的资源加载与文件路径
  13. KubeSphere DevOps 流水线入门指南
  14. c语言两个字符串比较,将两个字符串s1和s2比较,如果s1s2,作业 - 编一个程序,将两个字符串s1和s2比较,如果.doc...
  15. OpenGL超级宝典笔记——光照参数与材料属性
  16. uniapp 微信云开发静态网站和云函数跳转小程序
  17. Hashkey邓超:投资数字金融的三大逻辑和三大视角(全文)
  18. 技术人玩小游戏,如何“不战而胜”
  19. fx3g485通讯模块_FX3G-485-BD用户手册三菱FX3G-485-BD数据通讯版手册 - 广州凌控
  20. root精灵黑屏,刷机精灵解除root

热门文章

  1. windows录屏_电脑是怎么录屏的呢?推荐三个录屏实用方法!
  2. 视频直播系统源码,比较图片
  3. Java8新特性详解
  4. Mac下nginx的安装记录(亲测可用)
  5. K3 Cloud 常用语法及常见异常
  6. 5304—K3 Cloud 自定义webAPI
  7. No.3PPT风格及搭配
  8. 计算机硬盘内存不足什么原因,电脑硬盘内存不足怎么办
  9. 51单片机 wifi模块代码编写的历程 esp8266
  10. AE缺失Form Trapcode Form