我正在使用Qt Creator构建一个主窗口,并将所有的小部件填充到主窗口中。在这个阶段,我没有设置任何主窗口布局(如“在网格中布局”或“水平布局”)。
当我启动应用程序时,我想动态地将其中小部件的主窗口布局更改为“在网格中布局”,就像在Qt Designer中一样,通过按下左按钮。
我已经努力尝试了所有可能的组合阅读周围的许多职位。在Qt: Can't set layout in QMainWindow的解决方案不工作。
我试过了:
QGridLayout * MainWindowLayout = new QGridLayout;
ui->setupUi(this);
centralWidget()->setLayout(MainWindowLayout);
字符串
我尝试在设计时将所有的小部件放在一个名为MainWindowWidget的大部件中,然后将其设置为centralWidget:
QGridLayout * MainWindowLayout = new QGridLayout;
ui->setupUi(this);
setCentralWidget(ui->MainWindowWidget);
centralWidget()->setLayout(MainWindowLayout);
型
这两种尝试都导致窗口小部件没有如预期的那样放置在网格中。
下面是一段代码,您可以在空应用程序上尝试
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
/*
Place some widgets at design time with Creator (at least 2) in the MainWindow form
in a misplaced order and do not apply any "Lay out xxx" right button on QT Creator
*/
ui->setupUi(this);
/* HERE I WANT THE MainWindow or either an Object to take a specific Layout */
QGridLayout * MainWindowLayout = new QGridLayout;
ui->setupUi(this);
centralWidget()->setLayout(MainWindowLayout);
}
型
在使用Qt Designer时,有没有办法在设计时更改MainWindow小部件的布局,如“在网格中布局”?
2条答案
按热度按时间neekobn81#
您正在创建
layout
,但没有将widgets
添加到其中。这应该可以解决您的问题:字符串
mznpcxlj2#
最后,我做了以下工作:
我把我所有的表单小部件放在3个不同的小部件中(在我的例子中,QFrames作为容器)。然后我把它们放在建议的布局中,它工作了。
字符串