界面不一致问题
在Qt设计界面中, 会经常出现设计的窗口和实际运行窗口布置问题。如下图所示,设计界面大小可以调整,但是运行界面的默认是一定大小。
问题解决方案
在我们的主函数(main)中添加这么一段代码,注意Qt版本大于等于5.6。
if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling,true);
在这里插入代码片#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling,true);QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
原因
这段代码是Qt框架中用于处理高DPI(每英寸点数)显示的。在高DPI显示器上,像素密度更高,因此为了保持界面的清晰度和可读性,通常需要调整应用程序的缩放比例。从Qt 5.6版本开始,Qt提供了Qt::AA_EnableHighDpiScaling
这个应用程序属性,以允许开发者更容易地处理高DPI显示。
具体来说,这段代码做了以下事情:
- 它首先使用
QT_VERSION_CHECK
宏来检查Qt的版本。这个宏确保只有在Qt 5.6及以上版本中才会执行后续的代码。如果Qt版本低于5.6,那么QT_VERSION_CHECK(5, 6, 0)
将返回false,因此if
语句内的代码不会被执行。 - 如果Qt版本满足要求(即5.6或更高),那么它使用
QCoreApplication::setAttribute
方法来设置一个应用程序属性。这里设置的是Qt::AA_EnableHighDpiScaling
属性,并将其值设置为true
。这告诉Qt应用程序应该启用高DPI缩放功能。
启用高DPI缩放功能后,Qt应用程序将能够自动调整其界面元素的大小以适应高DPI显示器,从而确保应用程序在所有类型的显示器上都能呈现出清晰、一致的外观。