分组框示例展示了如何在Qt中使用不同类型的分组框。
分组框是容器小组件,用于在逻辑上和屏幕上将按钮组织成组。它们管理用户和应用程序之间的交互,因此您不必强制实施简单的约束。
分组框通常用于将复选框和单选按钮组织到独占组中。
组框示例由一个用于显示四个组框的类组成:独占单选按钮组、非独占复选框组、具有启用复选框的独占单选按钮组和具有普通按钮的组框。Window
窗口类定义
该类是用于显示多个组框的子类。类定义包含用于构造每个分组框并使用不同选择的按钮小部件填充它的函数:Window
QWidget
<span style="color:#404244"><span style="background-color:#3a4055"><span style="color:#ffffff"><span style="color:#ffff55">class</span> <span style="color:#4f9d08">Window</span> <span style="color:#ffffff">:</span> <span style="color:#ffff55">public</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a>
<span style="color:#ffffff">{</span><span style="color:#ffffff">
Q_OBJECT
</span><span style="color:#ffff55">public</span><span style="color:#ffffff">:</span>
<span style="color:#4f9d08">Window</span><span style="color:#ffffff">(</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">parent </span><span style="color:#ffffff">=</span> <span style="color:#ffff55">nullptr</span><span style="color:#ffffff">);</span>
<span style="color:#ffff55">private</span><span style="color:#ffffff">:</span>
<a data-cke-saved-href="https://doc.qt.io/qt-6/qgroupbox.html" href="https://doc.qt.io/qt-6/qgroupbox.html"><span style="color:#21be2b">QGroupBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">createFirstExclusiveGroup</span><span style="color:#ffffff">();</span>
<a data-cke-saved-href="https://doc.qt.io/qt-6/qgroupbox.html" href="https://doc.qt.io/qt-6/qgroupbox.html"><span style="color:#21be2b">QGroupBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">createSecondExclusiveGroup</span><span style="color:#ffffff">();</span>
<a data-cke-saved-href="https://doc.qt.io/qt-6/qgroupbox.html" href="https://doc.qt.io/qt-6/qgroupbox.html"><span style="color:#21be2b">QGroupBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">createNonExclusiveGroup</span><span style="color:#ffffff">();</span>
<a data-cke-saved-href="https://doc.qt.io/qt-6/qgroupbox.html" href="https://doc.qt.io/qt-6/qgroupbox.html"><span style="color:#21be2b">QGroupBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">createPushButtonGroup</span><span style="color:#ffffff">();</span>
<span style="color:#ffffff">};</span></span></span></span>
在示例中,小部件将用作顶级窗口,因此定义了构造函数,以便我们不必指定父小部件。
窗口类实现
构造函数创建一个网格布局,并用要显示的每个分组框填充它:
<span style="color:#404244"><span style="background-color:#3a4055"><span style="color:#ffffff"><span style="color:#4f9d08">Window</span><span style="color:#ffffff">::</span><span style="color:#4f9d08">Window</span><span style="color:#ffffff">(</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">parent</span><span style="color:#ffffff">)</span>
<span style="color:#ffffff">:</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a><span style="color:#ffffff">(</span><span style="color:#ffffff">parent</span><span style="color:#ffffff">)</span>
<span style="color:#ffffff">{</span>
<a data-cke-saved-href="https://doc.qt.io/qt-6/qgridlayout.html" href="https://doc.qt.io/qt-6/qgridlayout.html"><span style="color:#21be2b">QGridLayout</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">grid </span><span style="color:#ffffff">=</span> <span style="color:#ffff55">new</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qgridlayout.html" href="https://doc.qt.io/qt-6/qgridlayout.html"><span style="color:#21be2b">QGridLayout</span></a><span style="color:#ffffff">;</span><span style="color:#ffffff">
grid</span><span style="color:#ffffff">-</span><span style="color:#ffffff">></span><span style="color:#ffffff">addWidget</span><span style="color:#ffffff">(</span><span style="color:#ffffff">createFirstExclusiveGroup</span><span style="color:#ffffff">()</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">0</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">0</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
grid</span><span style="color:#ffffff">-</span><span style="color:#ffffff">></span><span style="color:#ffffff">addWidget</span><span style="color:#ffffff">(</span><span style="color:#ffffff">createSecondExclusiveGroup</span><span style="color:#ffffff">()</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">1</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">0</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
grid</span><span style="color:#ffffff">-</span><span style="color:#ffffff">></span><span style="color:#ffffff">addWidget</span><span style="color:#ffffff">(</span><span style="color:#ffffff">createNonExclusiveGroup</span><span style="color:#ffffff">()</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">0</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">1</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
grid</span><span style="color:#ffffff">-</span><span style="color:#ffffff">></span><span style="color:#ffffff">addWidget</span><span style="color:#ffffff">(</span><span style="color:#ffffff">createPushButtonGroup</span><span style="color:#ffffff">()</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">1</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">1</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
setLayout</span><span style="color:#ffffff">(</span><span style="color:#ffffff">grid</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
setWindowTitle</span><span style="color:#ffffff">(</span><span style="color:#ffffff">tr</span><span style="color:#ffffff">(</span><span style="color:#aaaaaa">"Group Boxes"</span><span style="color:#ffffff">));</span><span style="color:#ffffff">
resize</span><span style="color:#ffffff">(</span><span style="color:#ff55ff">480</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">320</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span></span></span></span>
用于创建每个分组框的函数都返回要插入到网格布局中的 a。
<span style="color:#404244"><span style="background-color:#3a4055"><span style="color:#ffffff"><a data-cke-saved-href="https://doc.qt.io/qt-6/qgroupbox.html" href="https://doc.qt.io/qt-6/qgroupbox.html"><span style="color:#21be2b">QGroupBox</span></a> <span style="color:#ffffff">*</span><span style="color:#4f9d08">Window</span><span style="color:#ffffff">::</span><span style="color:#ffffff">createFirstExclusiveGroup</span><span style="color:#ffffff">()</span>
<span style="color:#ffffff">{</span>
<a data-cke-saved-href="https://doc.qt.io/qt-6/qgroupbox.ht