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