更改分辨率时 Qml 应用程序不适合
Qml application is not fitting when you change resolution
我有一个具有 "Maximized" 可见性的简单 qml ApplicationWindow 程序。当 PC 设置如下时,该应用程序适合我的屏幕:
分辨率:1920x1080(推荐)
规模:100%
屏幕截图:Resolution_1920x1080_scale_100_screenshot.JPG
但是,当我将笔记本电脑的“缩放和布局”设置配置为 100% 并以最高分辨率 (1366 x 768) 显示笔记本电脑时,我的应用程序的右侧被剪切了。
截图(有问题):Resolution_1355x768_scale_100_screenshot.JPG
有什么解决的建议吗??
Qml:
import QtQuick 2.14
import QtQuick.Controls 2.14
ApplicationWindow {
id:root
visible: true
visibility: Window.Maximized//"Maximized"
title: qsTr("Hello World")
Rectangle {id:red; width: 900; height: 350; color: "red" }
Rectangle {id:yellow; width: 900; height: 350; color: "yellow"; anchors.left: red.right }
}
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
下面是分辨率设置为1920x1080的应用截图。红色和黄色矩形的大小相同。
上图是分辨率设置为1366x768的应用截图。红色和黄色矩形的大小相同。但是,使用这些设置,黄色的一半是不可见的。
在您的代码中,您使用了固定大小的矩形。所以改变显示分辨率不会改变项目的大小。为此使用相对位置和大小:
import QtQuick 2.14
import QtQuick.Controls 2.14
ApplicationWindow {
id:root
visible: true
visibility: Window.Maximized//"Maximized"
title: qsTr("Hello World")
Rectangle {id:red; width: root.width/2; height: parent.height; color: "red" }
Rectangle {id:yellow; width: root.width/2; height: parent.height; color: "yellow"; anchors.left: red.right }
}
我有一个具有 "Maximized" 可见性的简单 qml ApplicationWindow 程序。当 PC 设置如下时,该应用程序适合我的屏幕:
分辨率:1920x1080(推荐) 规模:100% 屏幕截图:Resolution_1920x1080_scale_100_screenshot.JPG
但是,当我将笔记本电脑的“缩放和布局”设置配置为 100% 并以最高分辨率 (1366 x 768) 显示笔记本电脑时,我的应用程序的右侧被剪切了。
截图(有问题):Resolution_1355x768_scale_100_screenshot.JPG
有什么解决的建议吗??
Qml:
import QtQuick 2.14
import QtQuick.Controls 2.14
ApplicationWindow {
id:root
visible: true
visibility: Window.Maximized//"Maximized"
title: qsTr("Hello World")
Rectangle {id:red; width: 900; height: 350; color: "red" }
Rectangle {id:yellow; width: 900; height: 350; color: "yellow"; anchors.left: red.right }
}
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
下面是分辨率设置为1920x1080的应用截图。红色和黄色矩形的大小相同。
上图是分辨率设置为1366x768的应用截图。红色和黄色矩形的大小相同。但是,使用这些设置,黄色的一半是不可见的。
在您的代码中,您使用了固定大小的矩形。所以改变显示分辨率不会改变项目的大小。为此使用相对位置和大小:
import QtQuick 2.14
import QtQuick.Controls 2.14
ApplicationWindow {
id:root
visible: true
visibility: Window.Maximized//"Maximized"
title: qsTr("Hello World")
Rectangle {id:red; width: root.width/2; height: parent.height; color: "red" }
Rectangle {id:yellow; width: root.width/2; height: parent.height; color: "yellow"; anchors.left: red.right }
}