提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2024-04-01 10:43:49.177|阅读 20 次
概述:本文将为大家介绍如何使用Qt Widget小部件创建文档查看器,欢迎下载最新版组件体验~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。
Group Box(分组框)示例展示了如何在Qt中使用不同类型的分组框。Group Box(分组框)是容器小部件,可以在逻辑上和屏幕上将按钮组织成组,它们管理用户和应用程序之间的交互,因此您不必强制执行简单的约束。
分组框通常用于将复选框和单选按钮组织到排他性组中。
Qt技术交流群:166830288 欢迎一起进群讨论
Group Boxes示例包含一个单一的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(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("R&adio button 2")); QRadioButton *radio3 = new QRadioButton(tr("Ra&dio 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("E&xclusive Radio Buttons")); groupBox->setCheckable(true); groupBox->setChecked(false);
分组框包含三个互斥的单选按钮和一个独立的复选框,为了保持一致性,必须始终选中一个单选按钮,因此我们确保首先选中第一个按钮。
QRadioButton *radio1 = new QRadioButton(tr("Rad&io button 1")); QRadioButton *radio2 = new QRadioButton(tr("Radi&o button 2")); QRadioButton *radio3 = new QRadioButton(tr("Radio &button 3")); radio1->setChecked(true); QCheckBox *checkBox = new QCheckBox(tr("Ind&ependent 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("C&heckbox 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("Pop&up Button")); QMenu *menu = new QMenu(this); menu->addAction(tr("&First Item")); menu->addAction(tr("&Second Item")); menu->addAction(tr("&Third Item")); menu->addAction(tr("F&ourth 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; }
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:慧都网本文将探讨如何使用 Spire.XLS for .NET 在 C# 程序中导入 Excel 数据到数据库以及导出数据库到 Excel 文件,实现数据在 Excel 和数据库之间无缝流转。
在本文中,我们将向您展示如何逐步执行此操作,告诉您什么是 SCORM,为什么需要使用它,并列出我们测试过的最佳 SCORM 转换工具之一——iSpring Suite。
本文主要介绍如何使用Kendo UI for Angular组件的ListView来构建带有图表的仪表板,欢迎下载新版控件体验!
在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码。
一个跨平台的C++图形用户界面应用程序开发框架。
QtitanChart性能优异的跨平台Qt类图表组件
QtitanRibbon专业全面 & 实现Qt技术的跨平台Ribbon UI组件
QtitanDataGrid一个独特的Qt开发框架产品,吸收了Delphi、C++以及其他语言的优点
QtitanDocking一个用于允许创建类似于Microsoft可停靠用户界面的Qt框架组件。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢