Attribute Qt::AA_EnableHighDpiScaling must be set before QCoreApplication is created.
时间: 2024-03-25 17:41:19 浏览: 327
在 Qt 5 中,如果您的应用程序需要支持高 DPI 显示,您需要在创建 `QApplication` 对象之前启用 `Qt::AA_EnableHighDpiScaling` 属性。
例如,您可以在 `main()` 函数中的 `QApplication` 对象创建之前设置此属性:
```
int main(int argc, char* argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);
// ...
return app.exec();
}
```
如果在创建 `QApplication` 对象之后设置 `Qt::AA_EnableHighDpiScaling` 属性,您将会收到该错误信息。因此,确保在创建 `QApplication` 对象之前设置此属性。
相关问题
仍然报错:Attribute Qt::AA_EnableHighDpiScaling must be set before QCoreApplication is created.
如果您在 `QMainWindow` 类的构造函数中添加了 `QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling)`,但仍然收到相同的错误消息,则可能是因为您在 `main()` 函数中创建了一个 `QCoreApplication` 对象,而不是 `QApplication` 对象。
请注意,只有 `QApplication` 对象支持高 DPI 缩放,并且必须在 `QApplication` 对象创建之前启用 `Qt::AA_EnableHighDpiScaling` 属性。
因此,请确保您在 `main()` 函数中创建的是 `QApplication` 对象而不是 `QCoreApplication` 对象。例如:
```
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
// ...
return app.exec();
}
```
在上面的代码中,我们首先创建了一个 `QApplication` 对象,然后在设置 `Qt::AA_EnableHighDpiScaling` 属性之前启用了此属性。这应该可以解决您的问题。
阅读全文