我有一个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"按钮关闭窗口...但我没有在这方面编写任何代码。
答案 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);
}