获取嵌套在多个布局中的QT窗口小部件的绝对位置

时间:2014-09-02 12:38:38

标签: qt

我想得到一个QT小部件的绝对位置,它是一个(水平)布局,它本身位于一个有布局的中央小部件中。

我已尝试QWidget::mapToGlobalQWidget::mapTo,但我不断获得(0,0)

修改 这是我目前的实施

QPoint p( 0 , 0 );  // Recall that widget 'lineEdit' is in a layout, which is itself in a layout
QPoint point = ui.lineEdit->mapToGlobal( p );

1 个答案:

答案 0 :(得分:1)

“绝对位置”毫无意义。

QWidget::mapToGlobal,正如文档所述: -

  

“将窗口小部件坐标pos转换为全局屏幕坐标”,

这不是你想要的,正如你在评论中提到的那样,你正在寻找“窗口小部件相对于窗口左上角的位置

您可以使用QWidget::mapTo功能,但请注意文档中的以下内容: -

  

父级不能为0且必须是调用小部件的父级

从您添加到示例中的代码中,您看起来已经使用Qt Designer来创建和设置小部件。当您调用mapToGlobal时,mapToGlobal返回(0,0)只有两个原因: -

1)小部件的左上角实际位于屏幕的左上角

2)我怀疑你在窗口之前调用了地图功能,并且它的小部件已经显示在屏幕上。

没有看到你的所有代码,我会说没有。 2是这里最可能的问题,所以你在类似MainWindow的构造函数的地方调用映射函数。