qt 主窗口中排列多个子窗口的布局问题

       笔者原本以为这是个很容易的问题,早期的想法是在主窗口中使用布局管理器。只能说想法太简单。如果在窗口中放置一般的由QWidget派生出的部件,如QPushButton,QTextEdit等,这自然是可以办到的。但是如果在主窗口中放置QMainWindow,QDialog这样的子窗口,布局管理器就没什么办法。这样放置的结果是这些窗口嵌入到主窗口中了,但是没有标题栏以及最大最小化按钮等边框部分,这应该是QT布局管理器的默认设置。QMainWindow,QDialog的标题栏以及最大最小化按钮等边框部分的显示与否与flag有关: Qt::Window |Qt::WindowMaximizeButtonHint | Qt::WindowMinimizeButtonHint | Qt::WindowTitleHint;只有当Window是一个顶级Window的时候,后面的几个属性才有意义,才有效果。

       关于 Qt::Window这个属性在博友的文章http://blog.csdn.net/dbzhang800/article/details/6737540中有详细表述。

      笔者的考虑是,一旦设置QMainWindow的Qt::Window属性,它所在布局管理器就无效了。

       因此,笔者使用了比较常规的方法:精确定位。

      先获取通过主窗口的pos(),frameGeometry(), weight(),height()等属性,使用move(),setResize()来设置子窗口的位置和尺寸,为了保证子窗口跟随主窗口变化,在主窗口的事件管理器showEvent()和resizeEvent()中分别使用move(),setResize()重新确定子窗口的位置和尺寸。这是个比较笨的法子 。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值