QT笔记——在QMainWindow内直接添加Layout行不通
来源:互联网 发布:java的api下载 编辑:程序博客网 时间:2024/05/21 08:03
在QT开发过程中,有时候会遇到这样的问题,当我们自己创建了一个Layout对象以后,使用QWidget的setLayout方法,将这个Layout对象应用到窗口中的时候,发现窗口上没有我们添加的控件,比如,QMainWindow就是一个例子,还有QToolBar也是这样,还有其他的QT预定义的别的窗口类有时候也会遇到这样的情况。
之所以出现这样的情况,是因为这个窗口类中,已经有了一个Layout对象了,这时候,当你再setLayout的时候,就是无效的,这是有三个办法,一个办法是调用layout()方法,返回这个窗口内部的Layout的对象,然后删除它,再调用setLayout设置自己的Layout对象,还有一个办法,就是直接使用这个窗口内部的Layout对象,第三个方法,就是直接创建其子窗口,在这个子窗口中使用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
- QT笔记——在QMainWindow内直接添加Layout行不通
- 在QMainWindow内直接添加Layout行不通
- QMainWindow内直接添加Layout行不通
- Qt中在QMAinWindow内添加layout出现问题
- QMainWindow中添加layout的问题
- Qt 之路 (11)—QMainWindow
- Java6学习笔记22——在Swing中不使用Layout管理器直接描绘窗口
- Qt中QMainWindow对象设置layout的方法
- Qt中QMainWindow对象设置layout的方法
- Qt学习笔记:QMainWindow与QDockWidget
- Qt学习笔记3---QMainWindow使用
- QT——QWidget、QMainWindow、 QDialog用法区别解析
- QT开发(二十二)——QMainWindow主窗口
- QT学习——QWidget,QMainWindow和QDialog的区别
- Qt-QMainWindow
- 在QMainWindow添加控件,无法显示问题
- QT mouseMoveEvent事件(qmainwindow内追踪鼠标事件事件)
- QT mouseMoveEvent事件(qmainwindow内追踪鼠标事件事件)
- 微信小程序对Android的冲击
- I/O复用机制概述
- 销售与顾客的PV同步算法
- 彻底禁用UAC,解决“Windows 8/10 Administrator须以管理员身份运行才有权限”的问题
- 52.Next Permutation-下一个排列(中等题)
- QT笔记——在QMainWindow内直接添加Layout行不通
- struts获取web页面时,request为null
- Lucene创建索引入门
- Ext_windows 组件(二)
- 【codevs 1130】数字反转
- NIO系列-02-升级版BIO
- 装饰者模式
- 欢迎使用CSDN-markdown编辑器
- 多线程中wait(),notify(),notifyAll()