我想得到一个QT小部件的绝对位置,它是一个(水平)布局,它本身位于一个有布局的中央小部件中。
我已尝试QWidget::mapToGlobal
和QWidget::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 );
答案 0 :(得分:1)
“绝对位置”毫无意义。
QWidget::mapToGlobal,正如文档所述: -
“将窗口小部件坐标pos转换为全局屏幕坐标”,
这不是你想要的,正如你在评论中提到的那样,你正在寻找“窗口小部件相对于窗口左上角的位置”
您可以使用QWidget::mapTo功能,但请注意文档中的以下内容: -
父级不能为0且必须是调用小部件的父级 。
从您添加到示例中的代码中,您看起来已经使用Qt Designer来创建和设置小部件。当您调用mapToGlobal时,mapToGlobal返回(0,0)只有两个原因: -
1)小部件的左上角实际位于屏幕的左上角
2)我怀疑你在窗口之前调用了地图功能,并且它的小部件已经显示在屏幕上。
没有看到你的所有代码,我会说没有。 2是这里最可能的问题,所以你在类似MainWindow的构造函数的地方调用映射函数。