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

最佳答案

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

如果你有两个码头

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信号,因为只要底座改变底座位置或在其当前位置内移动,该信号就会发出,该信号应包括所有必要的情况。

10-07 13:37