如何在当前停靠区域中获取QDockWidget的位置

时间:2016-04-15 19:48:26

标签: c++ qt qdockwidget

如何在当前停靠区域中获取QDockWidget的位置?例如,如果我有一个用两个小部件分成两半的停靠区域,我如何查询框架以找出哪一个位于顶部,哪一个位于底部?当然,用户可以动态地拖放QDockWidgets。

1 个答案:

答案 0 :(得分:1)

您可以通过检查两个几何的值来确定哪个停靠在另一个之上。

如果你有两个码头,

QDockWidget dock1;
QDockWidget dock2;

然后顶部的那个将具有较小的y()值(因为屏幕的左上角是(0,0)并且当你向底部移动时y值增加)

if(dock1.geometry().y() < dock2.geometry().y())
{
     qDebug() << "Dock 1 is above Dock 2";
}

可以使用x()值计算左右。如果几何图形是等效的,则会对标记为选项卡,顶部的图形可以由isVisible()的值确定。

如果你想重新计算哪个底座位于用户输入的顶部,我建议连接到QDockWidget::dockLocationChanged信号,因为只要底座改变了底座位置,它就会被发射,或者在它的当前位置移动位置,应涵盖所有必要的案例。