向QMainWindow中添加布局
今天(2019-4-9),我创建了一个不带ui文件的MainWindow中添加布局时发现控制台显示MainWindow中已经自带了一个布局器,没法添加。
找到默认布局器
对MainWindw类的Children()进行遍历:
for(auto x:MainWindow::children()){
qDebug()<<x;
}
控制台输出如下:
QMainWindowLayout(0x20c1fbf0, name = "_layout")
QPlainTextEdit(0x20c161f0)
QMenuBar(0x20c25570)
QToolBar(0x269e9f30)
QStatusBar(0x269e97f0)
可以看到,MainWindow的默认布局为QMainWindowLayout。
设置布局
直接百度,发现:[QMainWindow中直接添加LayOut是不可以的(解决方法看文章内容)]
上面给出了一个办法:
先创建一个
QWidget对象,并设置其为中心部件。对创建
QWidget对象设置布局
代码如下:
QWidget* main_widget=new QWidget(this);
setCentralWidget(main_widget);
QHBoxLayout *lay=new QHBoxLayout(main_widget);
main_widget->setLayout(lay);
如此,就完成了MainWindow的布局。
需要注意的是,如果将QHBoxLayout的父对象设置为this,虽然控制台会有警告,但是布局依然正确。