QML 的行为取决于所使用的监视器

QML's behavior depending on monitor used

我在 Ubuntu 14.04 上使用 Qt 的示例 Qt Quick Controls 2 和 Qt v5.7,我观察到不同的显示行为,具体取决于我在其上显示的显示器.

我有 2 个显示器:笔记本电脑的内部显示器和外部显示器。两者均为 1920 x 1080。

当我在笔记本电脑的显示器上显示应用程序时,我观察到:

当我在外接显示器上显示应用程序时,我观察到:

我唯一要做的就是将应用程序从一台显示器拖到另一台显示器。

外接显示器的显示效果不错,笔记本电脑的显示效果不好。

我在所有 QtQuick 应用程序中观察到这种行为,并且我没有修改示例应用程序的代码 Qt Quick Controls 2.

知道发生了什么吗?

----------------编辑----------------

我使用了下面的代码,发现我的内部显示器 (Screen.width x Screen.height) 被 QML 视为 960 x 540,而我的外部屏幕被视为 1920 x 1080。我的内部屏幕也应该是 960 x 540!

知道为什么 QML 认为我的内部屏幕是 960 x 540,而它应该是 1920x1080 吗?

MouseArea
{
    anchors.fill: parent
    onClicked:
    {
        console.log("name  = "                  + Screen.name)
        console.log("width  = "                 + Screen.width)
        console.log("height  = "                + Screen.height)
        console.log("desktopAvailableWidth  = " + Screen.desktopAvailableWidth)
        console.log("desktopAvailableHeight = " + Screen.desktopAvailableHeight)
        console.log("pixelDensity   = "         + Screen.pixelDensity )
        console.log("virtualX = "               + Screen.virtualX)
        console.log("virtualY = "               + Screen.virtualY)
    }
  }

尝试使用此代码获取屏幕分辨率:

import QtQuick 2.8
import QtQuick.Window 2.2

Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")


MouseArea {
    anchors.fill: parent
    onClicked: {

    console.log("Height = " + Screen.desktopAvailableHeight)
    console.log("Width  = " + Screen.desktopAvailableWidth)
    }
  }
}

这是因为我使用了 HighDpiScaling 选项。

当我去掉线的时候

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

main.cpp 加载 main.qml 我的问题消失了。