如何在Qt Designer中管理QSplitter

问题描述

当按下按钮时,我希望弹出一个对话框,用户可以在其中选择内容并最终按下 ‘Ok’ 按钮。我想在这个对话框中放置一个 QSplitter,左侧面板将显示树状结构,右侧将显示其他内容。如何正确实现这一点?

从 Qt 的示例代码可以看出:

QSplitter *splitter = new QSplitter(parent);
QListView *listview = new QListView;
QTreeView *treeview = new QTreeView;
QTextEdit *textedit = new QTextEdit;
splitter->addWidget(listview);
splitter->addWidget(treeview);
splitter->addWidget(textedit);

在这个示例中,splitter 是没有使用对话框资源创建的。如果我必须以这种方式创建,那意味着所有控件都需要在代码中创建,而不是使用 Qt Creator。

解答一

可以简单地在 Qt Designer 中创建包含控件的 QSplitter:

  1. 首先在 Designer 中将控件放置在对话框或 widget 中(它们不应位于布局中)。
  2. 选择你想放置在 splitter 中的控件(按住 CTRL 并点击它们)。
  3. 右键点击选中的控件,从布局菜单中选择“Lay Out Horizontally in Splitter”或“Lay Out Vertically in Splitter”。
  4. 现在对对话框应用一个网格布局,一切应该都正常了。你可以在对象检查器视图中看到类似的内容:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

补充
  • 有用户指出在 splitter 中间的树控件占用了几乎 80% 的宽度,建议参考相关帖子,设置 stretch factor。

解答二

这是一个更详细的解决方法:

  1. 在某个 widget 容器内放置你需要的控件。例如,对于一个窗口,有一个 Widget 作为窗口,并在其中放置两个 widget,分别命名为 topContainer 和 bottomContainer。然后分别在这些容器中放置所需的控件,并为它们设置各自的布局。
  2. 不要选择主要容器,而是选择想分割的两个控件。实质上,你是在这两个控件之间放置一个 splitter,而不是在主要容器上。因此,在控件列表窗口中选择这两个控件,然后右键点击打开对话框菜单,滑动到布局选项,选择“Lay Out Vertically in Splitter”。
  3. 仍然需要在主要容器上应用一个布局。splitter 并不是一个布局,因此此时只需在主要容器上应用一个垂直布局即可。

关键在于:不是在包含待分割控件的主要容器上设置布局,而是通过选择待分割的控件并在它们之间添加一个 QSplitter。

解答三

在使用 Qt Designer 创建控件并使用 .ui 文件时,可以添加一个 QWidget 对象到对话框中。然后,在将要编写的 QDialog 派生类的构造函数中,使用 QWidget 对象作为父对象来创建 QSplitter。

这种方式可以使用 Qt Designer 来创建除 splitter 对象以外的所有控件。

总结

在 Qt Designer 中管理 QSplitter 主要有两种方法:直接在 Designer 中创建 splitter 并将控件加入其中,或者在 Designer 中创建控件,然后在代码中设置 splitter。选择哪种方法取决于项目的具体需求和个人的习惯。了解这两种方法以及相关的技巧将能帮助更有效地使用 Qt Designer 进行界面设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/32579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP的类别和发展

HTTP/1.0:引入头部、多种请求方法和非持久连接。 HTTP/1.1:默认持久连接、管道化、增强缓存控制和分块传输编码。 HTTP/2:二进制协议、多路复用、头部压缩和服务器推送。 HTTP/3:基于 QUIC 的 UDP 协议、更快的连接建立、内置加密…

Eclipse 工作空间:深入解析与高效使用

Eclipse 工作空间:深入解析与高效使用 Eclipse 是一款广受欢迎的集成开发环境(IDE),它为各种编程语言提供了强大的开发工具。在 Eclipse 中,工作空间(Workspace)是一个核心概念,它代…

【Mac】KeyKey — Typing Practice for mac软件介绍及安装

软件介绍 KeyKey 是一款为 macOS 设计的盲打练习软件,旨在帮助用户提高打字速度和准确性。它通过提供多种练习模式和实时反馈,使用户能够逐渐掌握触摸打字技能。以下是 KeyKey 的主要功能和特点: 主要功能和特点 多语言支持: …

python---OpenCv(二),背景分离方法较有意思

目录 边界矩形 旋转矩形(最小外接矩形): 计算轮廓 找4个点的坐标 把浮点型转为Int 画轮廓 边界矩形--(最大外接矩形) 转灰度 找轮廓 找顶点 画矩形 显示 背景分离方法(这个很好玩,可以识别在动的物体) 边…

泛微E9与金蝶云星空ERP的无缝集成案例详解(包括接口与字段)

业务系统现状 背景介绍 泛微E9和金蝶云星空ERP是两款广泛应用与企业管理的信息系统,分别在移动办公自动化和企业资源计划管理领域占据重要地位。然而企业在使用这些系统时往往面临着信息孤岛和系统孤立的问题,导致数据无法在不系统之间高效流转共享。 当…

rust函数指针和闭包异同探索随笔

//rust需要在编译时确定某个类型的值究竟会占据多少内存,而且同一类型的所有值都必须使用相同大小的内存,否则编译无法进行。 //对于DST动态大小类型在编译器期间无法得知其确切大小,所以直接定义此种类型的变量,rust编译无法通过…

qml:导入B站Up主的FluentUI插件

文章目录 文章介绍如何加载1、下载代码2、官方文档和组件介绍 运行FluentUI新建自己的qml项目,并导入FluentUI调用组件,展示效果图 文章介绍 up主“会磨刀的小猪”模仿微软Fluent风格写的界面,可以理解为用qt和qml写出的win10/win11风格的界…

Ubuntu 之Glade图形化设计器

演示环境说明:本机使用Windows 11 家庭版本搭载 Ubuntu 22.04.4 LTS 子系统,同时并安装Ubuntu桌面虚拟化软件XLaunch。 如果没有搭建好上述问题,请参考:windows11子系统Ubuntu 22.04.4子安装图形化界面 Glade是什么?…

im即时通讯软件系统,私有化部署国产化信创适配安全可控

私有化部署IM即时通讯软件系统是许多企业为了确保数据安全、控制隐私保护、提升灵活性而考虑的重要选择之一。信创适配安全可控是企业在私有化部署IM即时通讯软件系统时需要关注的关键点。本文将探讨私有化部署IM即时通讯软件系统的意义、信创适配的重要性,以及如何…

使用Vercel 搭建自己的Dashy导航页

背景 Dashy 是一个开源的自托管导航页面配置服务,它具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。用户可以利用 Dashy 将自己常用的一些网站聚合起来,形成一个个性化的导航页面。 同类的竞品还有Heimdall, Flare 等。 可以通过Docker 等…

OneNote 作为恶意软件分发新渠道持续增长

目前,Office 文件已经默认禁用宏代码,攻击者开始转向利用其他微软的软件产品来进行恶意 Payload 投递。默认情况下,OneNote 应用也包含在 Office 2019 和 Microsoft 365 软件中,所以 OneNote 文件越来越受到攻击者的青睐。如果有人…

(南京观海微电子)——TFT LCD压合技术

TFT-LCD TFT-LCD open cell后段制程主要指的是将驱动IC和PCB压合至液晶板上,这个制程主要由三个步骤组成: 1.ACF (Anisotropic Conductive Film)的涂布。 在液晶板需要压合驱动IC的地方涂布ACF,ACF又称异方性导电胶膜,特点是上下…

vue3 Elementplus 动态路由菜单不跳转问题

问题描述 vue3 Elementplus 使用component: () > import(/views/${item.componentPath}.vue)加载动态路由菜单不跳转, 报错 Unknown variable dynamic import: …/views/system/user/index.vue at dynamic-import-helper.js:7:96 解决 使用 使用 let modules impor…

IntelliJ IDEA 中显示或隐藏类中的方法

直接上图 左侧找到Project->右键->勾选Show Members即可显示 没有勾选的状态 勾选后的状态

模板初阶【C++】

文章目录 模板的作用模板的原理模板分为两大类——函数模板和类模板函数模板语法函数模板实例化模板函数的方式模板函数的类型转换既有函数模板又有已经实现的函数,会优先调用哪一个? 类模板语法模板类实例化对象模板类的模板参数可以有缺省值类模板中的…

如何获取特定 HIVE 库的元数据信息如其所有分区表和所有分区

如何获取特定 HIVE 库的元数据信息如其所有分区表和所有分区 1. 问题背景 有时我们需要获取特定 HIVE 库下所有分区表,或者所有分区表的所有分区,以便执行进一步的操作,比如通过 使用 HIVE 命令 MSCK REPAIR TABLE table_name sync partiti…

【计算机毕业设计】194高校学习助手微信小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Node.js实现短链接(ShortLink):shortid、epxress让URL更简单

文章目录 一、短链接介绍二、插件介绍1、epxress2、shortid 三、实现方案1、安装依赖:2、实现原理 四、示例代码五、测试生产短链接 一、短链接介绍 短链接是指仅包含一个网址的链接形式,通俗一些就是将一个很长很复杂的的网址变成一个简短易记的链接。…

Android Gradle开发与应用 (一) : Gradle基础

目录 一、什么是Gradle? 1.1 Gradle简介 1.2 Gradle的特点 二、Gradle的安装与配置 2.1 安装Gradle 2.1.1 下载Gradle 2.1.2 解压安装包 2.1.3 配置环境变量 2.1.4 验证安装 2.2 配置Gradle 2.2.1 配置Gradle版本 2.2.2 配置Gradle脚本 三、Gradle的构建文件结构…

TCP数据包长度范围介绍

在TCP协议中,数据被分割成称为TCP数据包(TCP segment)的单元进行传输。 TCP数据包的长度没有固定的范围,它可以根据网络和应用程序的需求而变化。 一般来说,TCP数据包的长度受到以下几个因素的影响: 最大传…