【发布时间】:2016-04-16 06:26:13
【问题描述】:
如何获取 QDockWidget 在其当前停靠区的位置?例如,如果我有一个由两个小部件分成两半的停靠区,我如何查询框架以找出哪个在顶部,哪个在底部?当然,用户可以动态地拖放 QDockWidgets。
【问题讨论】:
标签: c++ qt qdockwidget
如何获取 QDockWidget 在其当前停靠区的位置?例如,如果我有一个由两个小部件分成两半的停靠区,我如何查询框架以找出哪个在顶部,哪个在底部?当然,用户可以动态地拖放 QDockWidgets。
【问题讨论】:
标签: c++ qt qdockwidget
您可以通过检查两个几何图形的值来确定哪个码头在另一个之上。
如果你有两个码头,
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 信号,因为每当停靠点更改停靠点位置或在其当前位置内移动时,都会发出它,这应该涵盖所有必要的情况。
【讨论】: