QMessageBox 的关键方法有 4 个被覆盖的方法,它还具有用于设置标题、消息文本和父级的单独方法。
我想在桌面中央显示一个严重错误对话框。 我有桌面几何图形,我需要的是消息框的几何图形,以便我可以将其应用于桌面几何图形以使错误对话框居中。
但是这是一个鸡和蛋,在渲染定位之前我无法获得错误对话框,那么我该怎么做呢? 我不想求助于幻数来应用偏移量。
实际的解决方案要简单得多,只需从对 critical 的调用中删除父参数即可达到确切的预期效果:
const QString csMsg("'" + strConfig + "' does not exist!");
const QString csTitle("Error");
QMessageBox msgBox;
msgBox.critical(nullptr, csTitle, csMsg);
QApplication::quit();
这应该将对话框居中放在主桌面上,但我没有在多屏幕设置上对其进行测试。
QMessageBox message(QMessageBox::Critical, QObject::tr("Error!"),
QObject::tr("This is a critical error!"),
QMessageBox::Ok,
QApplication::desktop());
message.exec();
编辑 它确实是QMessageBox的构造函数之一,正如用户Scheff正确指出的那样。此解决方案利用了Qt的默认行为,即将对话框居中与父小部件。
有时,我发现在某些平台上,提供空父级不会使对话框在屏幕上居中,因为不同的窗口装饰器可能会采用不同的对话框定位策略。强制桌面小部件成为父级为我解决了 100% 的问题。
无论如何,任何有效的都是好的:)