我已经尝试过此代码,但是该按钮未显示在主窗口中。
#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;
}
我试图通过传递枚举来对齐来更改代码,但是没有任何效果。
答案 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。还可以考虑为变量使用更好的名称!