如何在当前停靠区域中获取QDockWidget的位置?例如,如果我有一个用两个小部件分成两半的停靠区域,我如何查询框架以找出哪一个位于顶部,哪一个位于底部?当然,用户可以动态地拖放QDockWidgets。
答案 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
信号,因为只要底座改变了底座位置,它就会被发射,或者在它的当前位置移动位置,应涵盖所有必要的案例。