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

How can I get the location of a QDockWidget in its current dock area

本文关键字:停靠区 位置 何获取 获取 QDockWidget      更新时间:2023-10-16

如何获取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信号,因为每当停靠站更改停靠站位置或在其当前位置内移动时,都会发出该信号,这应该涵盖所有必要的情况。