我是 Qt 新手,我不知道如何解决这个问题。当用户单击取消停靠按钮时,我有一个 QDockWidget 放置在某个位置(我不知道它的名称)。发生这种情况时,小部件的可见性会更改两次,因为它会消失并再次出现但未停靠。为了在它脱离后将其放置在某个位置,我在可见性更改事件中使用它:
if (ui->searchBar->isFloating()) {
int x = (this->x() + this->width()) - 410;
int y = (this->y() + this->height()) - 70;
ui->searchBar->setGeometry(QRect(x,y,400,60));
}
问题是,在 Linux 中,如果我通过拖动小部件而不是单击取消停靠按钮来取消停靠,当我将它放在窗口的某个位置时,它会自动移动到上面代码指定的位置。这是有道理的,但是这不会在 Windows 中发生(而且我需要应用程序在两个操作系统中运行)。在 Windows 中,如果您单击按钮,它会转到指定位置,但如果您拖动它,它会停留在您放置它的位置。
要修复它,我计划仅在未拖动小部件时才使用上述代码,但我不确定如何执行此操作。有人可以帮助我或对如何解决这个问题有更好的想法吗?