Qt中关于setGeometry()函数的问题

setGeometry是相对于父窗体来说的一种对子窗体进行位置设置的方法。
当我用在不同的窗体的时候发现有不同的形式

QMainWindow 和QWidget都是相对父窗体来说的,可是QDialog用上这个设置位置的函数,却是相对于桌面而言的。但是按照道理,他们都是继承的QWidget,setGeometry这个函数的功能应该是相同的才对呀。如果说QDialog是顶级窗体的话,那么QMainWindow也是顶级窗体,根本就解释不通,有木有人知道这个现象该怎么解释哇!我的dialog的父窗体不是空,是this, 也就是MainWindow或是widget。


正解:

这里是QT文档里的。
Note that QDialog (an any other widget that has type Qt::Dialog) uses the parent widget slightly differently from other classes in Qt. A dialog is always a top-level widget, but if it has a parent, its default location is centered on top of the parent's top-level widget (if it is not top-level itself). It will also share the parent's taskbar entry.

   QDialog即使有父窗口也是顶层窗口,所以位置是相对桌面的。但一般使用都是不设置它位置的,默认就是在父窗口中间。要设置相对父窗口的位置就先获得父窗口的全局位置,再相加吧。


*********************

想要setGeometry有效,控件就不能在布局里。
如果使用了布局,控件大小有布局自动控制。


  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值