我正在QT Creator和QT Designer中开发一个程序。这是我第一次接触QT家族,现在已经从事此工作大约3周了。我必须为要分配给它的研究设计各种菜单。
我正在使用内置的QT Designer / QT Creator拖放功能来制作最大的片段,然后使用代码在运行时更改某些内容(例如,某些富文本标签在用户输入后发生了更改)。我的问题是我正在使用两个显示器的设置。一台显示器的分辨率为1920 x 1080,另一台显示器的分辨率为3840 x2160。当我将正在运行的程序从1920/1080屏幕拖动到另一台显示器时,调整大小将使一切陷入困境。 LineEdit中的文本会被截断,并且标签通常会变得很螺丝钉。
我将QT Widget Application项目用作QT Creator的基础,并且所有UI表单都是.ui文件,而不是.qml文件。我已经完成了很大一部分工作,因此我需要在解决此问题时将所有内容保留在.ui中,或者找到一种简单的方法来转换为更好的格式并解决问题。
非常奇怪的是,QT Designer的表单预览屏幕在两个屏幕上看起来都相同。我可以在1920/1080屏幕和3840/2160屏幕之间拖动主菜单预览,只有很小的变化。同时,根据屏幕的不同,QT Creator中正在运行的程序在外观上存在巨大差异。
下面是一张希望从视觉上更好地解释它的图片:
这些只是两个打印屏幕,它们被裁剪以显示发生变化的事物之一。上半部分是正在运行的程序,下半部分是预览,它们都在同一屏幕上以相同的屏幕尺寸(最大化)显示。我尝试过更改Designer中各种元素的horizontalStretch和verticalStretch,但仍然很烦人。
这可能是菜鸟问题,但实际上我是QT的菜鸟。我只是想确保无论我们在什么尺寸的屏幕上运行该设备,无论什么情况,它看起来都一样。
答案 0 :(得分:0)
看起来像Qt中与小部件themes相关的问题。
Qt Designer使用融合样式向您显示表单预览,但是当您运行程序时,Qt将为您的平台选择最佳匹配。这可以解释您看到的差异。您可以重写此行为以强制融合样式。
编辑:您可以尝试的另一件事是启用Hi-DPI屏幕支持以进行渲染(如果尚未设置)。 只需将以下行添加到您的主要功能中即可:
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication::setStyle(QStyleFactory::create("Fusion")); // these lines before the next
QApplication a(argc, argv);
您需要在顶部添加#include <QStyleFactory>
才能使其正常工作。