「Qt Widget中文示例指南」如何实现一个分组框
Qt是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写所有平台无差别运行更提供了几乎所有开发过程中需要用到的工具。如今Qt已被运用于超过70个行业、数千家企业支持数百万设备及应用。Group Box分组框示例展示了如何在Qt中使用不同类型的分组框。Group Box分组框是容器小部件可以在逻辑上和屏幕上将按钮组织成组它们管理用户和应用程序之间的交互因此您不必强制执行简单的约束。分组框通常用于将复选框和单选按钮组织到排他性组中。Group Boxes示例包含一个单一的Window类用于显示四个分组框一个独占的单选按钮组、一个非独占的复选框组、一个具有启用复选框的独占单选按钮组以及一个具有普通按钮的组框。Window类定义Window类是QWidget的一个子类用于显示多个分组框。类定义包含构造每个分组框的函数并用不同选择的按钮部件填充它class Window : public QWidget { Q_OBJECT public: Window(QWidget *parent nullptr); private: QGroupBox *createFirstExclusiveGroup(); QGroupBox *createSecondExclusiveGroup(); QGroupBox *createNonExclusiveGroup(); QGroupBox *createPushButtonGroup(); };在本示例中小部件将用作顶级窗口因此定义了构造函数这样我们就不必指定父小部件。Window类实现构造函数创建了一个网格布局并用要显示的每个分组框填充它Window::Window(QWidget *parent) : QWidget(parent) { QGridLayout *grid new QGridLayout; grid-addWidget(createFirstExclusiveGroup(), 0, 0); grid-addWidget(createSecondExclusiveGroup(), 1, 0); grid-addWidget(createNonExclusiveGroup(), 0, 1); grid-addWidget(createPushButtonGroup(), 1, 1); setLayout(grid); setWindowTitle(tr(Group Boxes)); resize(480, 320); }用于创建每个分组框的函数都返回一个要插入到网格布局中的QGroupBox。QGroupBox *Window::createFirstExclusiveGroup() { QGroupBox *groupBox new QGroupBox(tr(Exclusive Radio Buttons)); QRadioButton *radio1 new QRadioButton(tr(Radio button 1)); QRadioButton *radio2 new QRadioButton(tr(Radio button 2)); QRadioButton *radio3 new QRadioButton(tr(Radio button 3)); radio1-setChecked(true);第一个分组框包含并管理三个单选按钮由于分组框只包含单选按钮因此默认情况下它是排他性的因此在任何给定时间只能选中一个单选按钮。我们检查第一个单选按钮以确保按钮组包含一个已检查的按钮。QVBoxLayout *vbox new QVBoxLayout; vbox-addWidget(radio1); vbox-addWidget(radio2); vbox-addWidget(radio3); vbox-addStretch(1); groupBox-setLayout(vbox); return groupBox; }我们在分组框中使用垂直布局以垂直列表的形式显示按钮并将分组框返回给构造函数。第二个分组框本身是可检查的提供了一种方便的方法来禁用其中的所有按钮。最初它是未选中的因此必须先选中分组框本身然后才能选中其中的任何单选按钮。QGroupBox *Window::createSecondExclusiveGroup() { QGroupBox *groupBox new QGroupBox(tr(Exclusive Radio Buttons)); groupBox-setCheckable(true); groupBox-setChecked(false);分组框包含三个互斥的单选按钮和一个独立的复选框为了保持一致性必须始终选中一个单选按钮因此我们确保首先选中第一个按钮。QRadioButton *radio1 new QRadioButton(tr(Radio button 1)); QRadioButton *radio2 new QRadioButton(tr(Radio button 2)); QRadioButton *radio3 new QRadioButton(tr(Radio button 3)); radio1-setChecked(true); QCheckBox *checkBox new QCheckBox(tr(Independent checkbox)); checkBox-setChecked(true);按钮的排列方式与第一个分组框中的按钮相同。QVBoxLayout *vbox new QVBoxLayout; vbox-addWidget(radio1); vbox-addWidget(radio2); vbox-addWidget(radio3); vbox-addWidget(checkBox); vbox-addStretch(1); groupBox-setLayout(vbox); return groupBox; }第三个分组框使用“平面”样式构造更适合某些类型的对话框。QGroupBox *Window::createNonExclusiveGroup() { QGroupBox *groupBox new QGroupBox(tr(Non-Exclusive Checkboxes)); groupBox-setFlat(true);此分组框仅包含复选框因此默认情况下它是非排他性的这意味着每个复选框都可以独立于其他复选框进行选中。QCheckBox *checkBox1 new QCheckBox(tr(Checkbox 1)); QCheckBox *checkBox2 new QCheckBox(tr(Checkbox 2)); checkBox2-setChecked(true); QCheckBox *tristateBox new QCheckBox(tr(Tri-state button)); tristateBox-setTristate(true);同样我们在分组框中使用垂直布局以垂直列表的形式显示按钮。QVBoxLayout *vbox new QVBoxLayout; vbox-addWidget(checkBox1); vbox-addWidget(checkBox2); vbox-addWidget(tristateBox); vbox-addStretch(1); groupBox-setLayout(vbox); return groupBox; }最后一个分组框只包含按钮并且与第二个分组框一样它是可检查的。QGroupBox *Window::createPushButtonGroup() { QGroupBox *groupBox new QGroupBox(tr(Push Buttons)); groupBox-setCheckable(true); groupBox-setChecked(true);我们创建了一个普通按钮、一个切换按钮和一个平面按钮QPushButton *pushButton new QPushButton(tr(Normal Button)); QPushButton *toggleButton new QPushButton(tr(Toggle Button)); toggleButton-setCheckable(true); toggleButton-setChecked(true); QPushButton *flatButton new QPushButton(tr(Flat Button)); flatButton-setFlat(true);Push按钮可以用来显示弹出式菜单我们创建一个并附加一个简单的菜单QPushButton *popupButton new QPushButton(tr(Popup Button)); QMenu *menu new QMenu(this); menu-addAction(tr(First Item)); menu-addAction(tr(Second Item)); menu-addAction(tr(Third Item)); menu-addAction(tr(Fourth Item)); popupButton-setMenu(menu);最后我们垂直布局小部件并返回创建的分组框QVBoxLayout *vbox new QVBoxLayout; vbox-addWidget(pushButton); vbox-addWidget(toggleButton); vbox-addWidget(flatButton); vbox-addWidget(popupButton); vbox-addStretch(1); groupBox-setLayout(vbox); return groupBox; }

相关新闻

抢先看!界面控件DevExpress WPF 2024产品路线图预览(一)

抢先看!界面控件DevExpress WPF 2024产品路线图预览(一)

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 本文将介绍2024年Dev…

2026/11/1 20:54:47 阅读更多 →
REM-unit-polyfill性能优化:7个技巧提升旧浏览器CSS渲染速度

REM-unit-polyfill性能优化:7个技巧提升旧浏览器CSS渲染速度

REM-unit-polyfill性能优化:7个技巧提升旧浏览器CSS渲染速度 【免费下载链接】REM-unit-polyfill A polyfill to parse CSS links and rewrite pixel equivalents into head for non supporting browsers 项目地址: https://gitcode.com/gh_mirrors/re/REM-unit-…

2026/11/1 22:04:40 阅读更多 →
TMS320F2837xS USB与uPP寄存器级编程及DMA配置实战指南

TMS320F2837xS USB与uPP寄存器级编程及DMA配置实战指南

1. 项目概述与核心价值 在嵌入式系统开发,尤其是工业控制、高速数据采集这类对实时性和带宽要求极高的领域,直接操作微控制器(MCU)的外设寄存器是工程师必须掌握的硬核技能。这不仅仅是调用几个现成的驱动库函数那么简单&#xff…

2026/11/1 22:04:40 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/4 1:35:24 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/3 10:57:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/3 11:35:49 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/4 6:23:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/3 10:47:27 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/3 10:57:33 阅读更多 →

日新闻

周新闻

月新闻