更改分辨率时,Qml 应用程序不合适

Posted

技术标签:

【中文标题】更改分辨率时,Qml 应用程序不合适【英文标题】:Qml application is not fitting when you change resolution 【发布时间】:2020-04-22 07:37:53 【问题描述】:

我有一个“最大化”可见性的简单 qml ApplicationWindow 程序。当 PC 设置如下时,该应用程序可以在我的屏幕上正常显示:

分辨率:1920x1080(推荐) 比例:100% 截图:Resolution_1920x1080_scale_100_screenshot.JPG

但是,当我将笔记本电脑的“Scale and Layout”设置为 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 的应用程序截图。红色和黄色矩形的大小相同。但是,使用这些设置,黄色的一半是不可见的。

【问题讨论】:

【参考方案1】:

在您的代码中,您使用了固定大小的矩形。所以改变显示分辨率不会改变项目的大小。为此使用相对位置和大小:

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  

【讨论】:

以上是关于更改分辨率时,Qml 应用程序不合适的主要内容,如果未能解决你的问题,请参考以下文章

QML 适合所有分辨率的屏幕

QML在被MouseArea拖动时无法更改项目的位置

系统缩放比例多少合适

Linux系统怎么更改屏幕分辨率

libVLC 更改视频宽高比

QML 文件的更改何时不生效?