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