gpt4 book ai didi

c++ - 为什么我的 QRadioButtons 没有出现在我的 QGroupBox 中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:59 27 4
gpt4 key购买 nike

这是我的代码,非常简单:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGroupBox>
#include <QRadioButton>
#include <QVBoxLayout>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

QGroupBox* genderGroupBox = new QGroupBox("Gender", ui->centralWidget);
QVBoxLayout* genderGroupBoxLayout = new QVBoxLayout(genderGroupBox);
QRadioButton* maleRadioButton = new QRadioButton("Male", genderGroupBox);
QRadioButton* femaleRadioButton = new QRadioButton("Female", genderGroupBox);

genderGroupBoxLayout->addStretch();
}

但出于某种原因,我的程序看起来像这样:

program output

我已经在 Qt 中编写了很多程序,但我完全不明白为什么单选按钮没有显示在组框中。我已经尝试用

显式添加它们
genderGroupBoxLayout->addWidget(maleRadioButton);

并通过手动添加布局

genderGroupBox->setLayout(genderGroupBoxLayout);

尽管由于它们的构造方式,两者都不是必需的。看起来单选按钮根本没有任何父项。

有人有什么想法吗?

我在 Mac 上使用 Qt Creator 3.1.2 进行编码。此外,.ui 文件除了具有网格布局的 centralWidget 之外没有任何内容。

最佳答案

请引用documentation :

When you use a layout, you do not need to pass a parent when constructing the child widgets. The layout will automatically reparent the widgets (using QWidget::setParent()) so that they are children of the widget on which the layout is installed.

您的代码应如下所示:

QGroupBox* genderGroupBox = new QGroupBox("Gender");
QVBoxLayout* genderGroupBoxLayout = new QVBoxLayout;
QRadioButton* maleRadioButton = new QRadioButton("Male");
QRadioButton* femaleRadioButton = new QRadioButton("Female");

genderGroupBoxLayout->addWidget(maleRadioButton);
genderGroupBoxLayout->addWidget(femaleRadioButton);
genderGroupBoxLayout->addStretch();
genderGroupBox->setLayout(genderGroupBoxLayout);

ui->centralWidget->layout()->addWidget(genderGroupBox);

关于c++ - 为什么我的 QRadioButtons 没有出现在我的 QGroupBox 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com