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