Qt QMessageBox中心在桌面中“关键”

时间:2018-10-15 12:36:05

标签: c++ qt qmessagebox

QMessageBox的关键方法有4个被覆盖的方法,它还具有用于设置标题,消息文本和父项的单独方法。

我想在桌面中央显示一个严重错误对话框。我有桌面几何图形,我需要的是消息框的几何图形,因此我可以将其应用于桌面几何图形以使错误对话框居中。

但是它是鸡和鸡蛋,在渲染以定位之前我无法获得错误对话框,那么我该怎么做?我不想求助于魔术数字来应用偏移量。

2 个答案:

答案 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%的时间。

无论如何,任何有效的方法都可以:)