查看完整版本: [-- 如何获得放在Layout布局器中控件的位置和大小 --]

QTCN开发网 -> Qt基础编程 -> 如何获得放在Layout布局器中控件的位置和大小 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

playlikun 2010-01-19 13:08

如何获得放在Layout布局器中控件的位置和大小

我在QHBoxLayout中放入一个QLineEdit控件,和一个QLabel控件,debug时看见两控件的size和point都一样,其中point都是(0,0),如果想获取QHBoxLayout布局中控件实际的point和size,该怎么操作,谢谢

午小夜 2010-01-19 13:46
geometry () ;

playlikun 2010-01-19 15:59
试过了,不行,两个控件都是(640,480,0,0),晕

yangfanxing 2010-01-19 16:19
x(),y(),左上角
width(),height()尺寸
总有的吧~~~多debug()几个看看~~~
geometry () ;好像对的啊。。。

playlikun 2010-01-19 17:04
谢谢楼上几位,搞定了

playlikun 2010-01-20 15:26
再请教一个问题,我想在一个QLineEdit控件得到焦点时,在该控件上方,紧挨着显示一个dialog,里面就是一个Calendar控件,以提供给用户设定日期,设定完后,再把数据带到QLineEdit控件里面,QLineEdit在主界面上创建完后,我在创建dialog的时候,把lineEdit->pos(),lineEdit->size()传到自定义的dialog类里,以方便做大小,位置的控制,这个Calendar界面挨着edit控件,保证宽度要和edit一样:

dialog类里获得edit控件的数据后,做 setGeometry(pos.x(), pos.y()-this->size().height(), ret.width(), this->size().height()); 操作,发现dialog的宽度和edit一致了,但是y值不对,dialog挡住了edit控件,没有显示在其上方,pos.y() - this->size().height()有问题吗?

yangfanxing 2010-01-20 16:03
setGeometry()
所以对应geometry->width()等等。。。
把this->size()等都改成this->geometry...
试试吧~~~。。。

playlikun 2010-01-20 18:12
刚试了一下,传参进来是lineEdit->geometry(),对应的形参是ret

dialog内部做:

setGeometry(ret.x(),ret.y()-this->geometry().height(),ret.width(),this->geometry().height());

宽度正好,位置还是遮住了edit控件,奇怪了,debug一看,this->geometry().height()只有30,默认对话框高度太小了

zc1239044730 2017-01-16 09:48
楼主怎么搞定的啊,我如今也遇到了这个问题

liu54 2017-05-09 19:19
我也遇到了。。。 你是怎么解决的呢?


查看完整版本: [-- 如何获得放在Layout布局器中控件的位置和大小 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled