C++Qt不用UI的形式完整代码实现有两个QRadiobutton,横向排列,第一个QRadioButton控制第一个QgroupBox,第二个QRadioButton控制第二个QgroupBOx,两个QgroupBOx放置在QRadioButton的下面
时间: 2024-03-05 07:47:58 浏览: 60
好的,下面是完整的代码实现:
```cpp
#include <QApplication>
#include <QWidget>
#include <QRadioButton>
#include <QGroupBox>
#include <QVBoxLayout>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *widget = new QWidget;
QVBoxLayout *layout = new QVBoxLayout(widget);
QRadioButton *radioButton1 = new QRadioButton("Group 1");
QRadioButton *radioButton2 = new QRadioButton("Group 2");
QGroupBox *groupBox1 = new QGroupBox("Group 1");
QGroupBox *groupBox2 = new QGroupBox("Group 2");
QVBoxLayout *groupBoxLayout1 = new QVBoxLayout(groupBox1);
QVBoxLayout *groupBoxLayout2 = new QVBoxLayout(groupBox2);
for (int i = 0; i < 5; ++i) {
groupBoxLayout1->addWidget(new QLabel(QString("Group 1 Item %1").arg(i+1)));
groupBoxLayout2->addWidget(new QLabel(QString("Group 2 Item %1").arg(i+1)));
}
groupBox1->setLayout(groupBoxLayout1);
groupBox2->setLayout(groupBoxLayout2);
layout->addWidget(radioButton1);
layout->addWidget(groupBox1);
layout->addWidget(radioButton2);
layout->addWidget(groupBox2);
QObject::connect(radioButton1, &QRadioButton::toggled, groupBox1, &QGroupBox::setVisible);
QObject::connect(radioButton2, &QRadioButton::toggled, groupBox2, &QGroupBox::setVisible);
groupBox1->setVisible(false);
groupBox2->setVisible(false);
widget->show();
return app.exec();
}
```
这个程序中,我们创建了一个 `QWidget` 作为主窗口,使用 `QVBoxLayout` 布局管理器对窗口进行布局。然后我们创建了两个 `QRadioButton` 和两个 `QGroupBox`,并将 `QGroupBox` 对象的布局管理器设置为 `QVBoxLayout`,并在其中添加了一些 `QLabel` 作为子控件。
接下来,我们将 `QRadioButton` 和 `QGroupBox` 添加到主窗口的布局管理器中,并使用 `QObject::connect` 函数将 `QRadioButton` 的 `toggled` 信号连接到 `QGroupBox` 的 `setVisible` 槽函数上,从而实现了根据 `QRadioButton` 的选中状态显示和隐藏对应的 `QGroupBox`。
最后,我们将两个 `QGroupBox` 的初始可见状态设置为 `false`,并显示主窗口。
阅读全文