这是我的代码,它非常简单:
#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();
}
但出于某种原因,我的程序看起来像这样:
我已经在Qt编程了很多,我完全不知道为什么单选按钮没有显示在组框内。我已尝试使用
明确添加它们genderGroupBoxLayout->addWidget(maleRadioButton);
并通过
手动添加布局genderGroupBox->setLayout(genderGroupBoxLayout);
尽管由于它们是如何构建的,它们都不是必需的。看起来收音机按钮根本没有任何父母。
有人有什么想法吗?
我在Mac上使用Qt Creator 3.1.2进行编码。除了具有网格布局的centralWidget之外,.ui文件也是空的。
答案 0 :(得分:1)
请参阅documentation:
使用布局时,不需要传递父级 构建子窗口小部件。布局将自动重新显示 小部件(使用QWidget :: setParent())使它们成为子类 安装布局的小部件。
您的代码应如下所示:
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);