Приложение Qml не подходит при изменении разрешения - PullRequest
1 голос
/ 22 апреля 2020

У меня есть простая программа qml ApplicationWindow с «развернутой» видимостью. Приложение правильно умещается на моем экране, когда значение P C ниже:

Разрешение: 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();
}

Ниже приведен скриншот приложения с настройка разрешения 1920х1080. Красный и желтый прямоугольники имеют одинаковый размер.

enter image description here

enter image description here

Над одним находится скриншот приложения с настройкой разрешения 1366x768. Красные и желтые прямоугольники имеют одинаковый размер. Но желтая половина не видна с этими настройками.

1 Ответ

1 голос
/ 22 апреля 2020

в вашем коде вы использовали прямоугольники фиксированного размера. Таким образом, изменение разрешения дисплея не изменит размер элементов. Используйте относительное положение и размер, чтобы это работало:

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 } 
}
...