即使在Qt中成功执行代码后,按钮也不会显示在主窗口上

时间:2018-07-26 19:50:54

标签: qt

我已经尝试过此代码,但是该按钮未显示在主窗口中。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QGridLayout>
#include<QLabel>
#include<QPushButton>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPushButton *l=new QPushButton();
    l->setText("abc");
    QGridLayout *q=new QGridLayout();
    q->addWidget(l);
    this->setLayout(q);
    this->show();




}

MainWindow::~MainWindow()
{
    delete ui;
}

我试图通过传递枚举来对齐来更改代码,但是没有任何效果。

2 个答案:

答案 0 :(得分:1)

创建新的 Qt窗口小部件应用程序时,将使用centralWidget创建默认形式(MainWindow ui),以放置所有其他窗口小部件。在您的代码中,您创建的QGridLayout没有父项,通常应将这种布局放置在ui->centralWidget中(只要您没有创建要设置为centralWidget的其他小部件),而且我假设您的mainWindow是从main.cpp显示的(不需要使用show())。因此,您的代码可能是:

QPushButton *l=new QPushButton();
l->setText("abc");
QGridLayout *q=new QGridLayout(ui->centralWidget);
q-> addWidget(l);

答案 1 :(得分:0)

尝试使用addWidget函数将小部件添加到带有索引的GridLayout中

void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = ...)

喜欢:

q-> addWidget(l, 0, 0);

P.S。还可以考虑为变量使用更好的名称!