[Qml应用程序不适合您更改分辨率

问题描述 投票:0回答:1

我有一个简单的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的应用程序的屏幕截图。红色和黄色矩形的大小相同。

enter image description here

enter image description here

上面是分辨率为1366x768的应用程序的屏幕截图。红色和黄色矩形的大小相同。但是,在这些设置下,黄色的一半不可见。

qt qml screen-resolution applicationwindow
1个回答
0
投票

在您的代码中,您使用了固定大小的矩形。因此,更改显示分辨率不会更改项目的大小。使用相对位置和大小可以正常工作:

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 } 
}
© www.soinside.com 2019 - 2024. All rights reserved.