Qt QDialog每次关闭时稍微移动位置并再次显示

时间:2016-01-21 15:30:06

标签: c++ qt qdialog

我有一个QDialog,它在第一次打开时弹出我主窗口中央的顶级窗口(很棒,正是我想要的)。但是,每次我点击" X"关闭窗口,当我触发一个事件导致QDialog再次弹出时(我使用show()函数)...小部件略微向下移动到右边(每次可能10个像素,每次)。有谁知道造成这种行为的原因/有解决方案吗?理想情况下,我希望它总是弹出我的主窗口的中心(就像它第一次打开时一样)。

提前致谢。

commandTimeWindow = new QDialog();
commandTimeWindow->resize(390, 180);
commandTimeWindow->setWindowTitle("Command In Progress");
commandTimeWindow->setStyleSheet("background-color: white;");
commandTimeWindow->setWindowFlags(Qt::WindowTitleHint |     Qt::WindowCloseButtonHint);
commandTimeWindow->setWindowIcon(QIcon(""));
commandTimeWindow->installEventFilter(this);


 commandTimeWindow->close();

 commandTimeWindow->show();

也是标准" X"按钮关闭窗口...但我没有在这方面编写任何代码。

2 个答案:

答案 0 :(得分:1)

您可以使用小部件的move(x,y)方法或用setGeometry替换resize。

答案 1 :(得分:0)

我能够使用以下代码解决我的问题:

void MyMainWindow::moveEvent(QMoveEvent* event)
{
    const QPoint global = this->mapToGlobal(rect().center());
    waitDialog->move(global.x() - waitDialog->width() / 2, global.y() -   waitDialog->height() / 2);
}