当前位置:   article > 正文

QT不用UI,QMainWindow添加layout 控件不显示问题_qt layout没能显示

qt layout没能显示

QT中setLayout无效的问题

在QT开发过程中,有时候会遇到这样的问题,当我们自己创建了一个Layout对象以后,使用QWidget的setLayout方法,将这个Layout对象应用到窗口中的时候,发现窗口上没有我们添加的控件,比如,QMainWindow就是一个例子,还有QToolBar也是这样,还有其他的QT预定义的别的窗口类有时候也会遇到这样的情况。

之所以出现这样的情况,是因为这个窗口类中,已经有了一个Layout对象了,这时候,当你再setLayout的时候,就是无效的。
下面有三个解决办法:
1、调用layout()方法,返回这个窗口内部的Layout的对象,然后删除它,再调用setLayout设置自己的Layout对象,
2、,就是直接使用这个窗口内部的Layout对象,
3、就是直接创建其子窗口,在这个子窗口中使用Layout对象,如,在QMainWindow中,我们通常创建一个继承于QWidget的窗口对象,然后调用setCentralWidget方法来安装这个窗口,然后在这个窗口中使用自己的Layout。

在QDialog的派生类中,添加Layout,可在创建Layout对象的同时指定其父窗口,但这在QMainWindow中行不通。

基于主窗口的程序,默认已经有了自己的布局管理器。

QMainWindow的中心控件是一个QWidget,可以通过setCentralWidget设置。若想在QMainWindow中添加 layout,需要通过将该Layout添加到一个QWidget对象中,然后将该布局设置为该空间的布局,最后设置该控件为QMainWindow的中心控件,代码如下:

QWidget* widget = new QWidget(this);

widget->setLayout(gridLayout);

this->setCentralWidget(widget);

下面是拓展了解帖:

http://hi.baidu.com/dbzhang800/item/a7bf1f1e983c6af964eabf45

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/615948
推荐阅读
相关标签
  

闽ICP备14008679号