qt中如何获得控件所在的布局的指针。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt中如何获得控件所在的布局的指针。。相关的知识,希望对你有一定的参考价值。

程序执行过程中动态添几个布局,每个布局中有一个按钮和lineedit,所有按钮使用同一个槽。在槽中我用sender()可以获得按钮的指针,但我想获得同一个布局中的lineedit的指针。我的想法是先获得按钮所在布局的指针,在获取lineedit的指针。但怎样才能获得所在布局的指针呢?qwidget类中有一个layout()函数,但返回的结果不对。。。

参考技术A 设一个objectname吧,然后用qt的函数遍历搜索。本回答被提问者采纳 参考技术B 这不是我昨天在知道上提的问题吗。。。。。追问

有才。。

如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置

用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局。

 

但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置。

 

在处理子窗口鼠标事件时变的很麻烦。主窗口有菜单、工具条等,想用鼠标绘图,

把鼠标轨迹映射到窗口部件上,这些问题。

 

 

其实最主要的是获得窗口部件的起始点相对主窗口的位置。

 

例如:在主窗口拖入一个QScrollArea 在其上放一个QLabel用来显示鼠标事件。

可以在ui对象结构上看到如下结构。

 技术分享图片

 

大家知道,我们可以用pos()来获得某一窗口部件的起始点相对其父的位置。

 

那么,看结构可知,要获得scrollArea_2在主窗口(MainWindow)中的相对位置

即为:ui->scrollArea_2->pos()+ui->centralWidget->pos()

 

所以想获得窗口ScrollArea_2在主窗口中的相对位置区域为:

 

    labelrect = QRect(ui->scrollArea_2->pos()+ui->centralWidget->pos(),
                      ui->scrollArea_2->size());

那么判断鼠标是否在此控件上只需在鼠标事件响应函数内写如下语句即可:

if(labelrect.contains(event->pos()))   {……}

 

 

现在你可以在任意复杂的ui结构中确定某一子部件的位置了,但一定要注意:

父关系,即当前部件于其父部件的相对位置,其父部件与上层部件的相对位置,

直到与主窗口的相对位置。

 

http://blog.csdn.net/yh_1988/article/details/6773451

以上是关于qt中如何获得控件所在的布局的指针。。的主要内容,如果未能解决你的问题,请参考以下文章

如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置

Qt中获取控件所在界面的位置,该怎么解决

Qt中获取控件所在界面的位置,该怎么解决

QT布局管理器 Layout,如何实现窗口最大化时,控件也随着变大。

Qt 模仿QQ截图 动态吸附直线

Android在Activity里如何获得另一个xml布局文件的控件