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

时间:2017-07-27 13:37:22

标签: qt qml qtquick2 qtquickcontrols2

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

我有2台显示器:我的笔记本电脑的内置显示器和外接显示器。两者都是1920 x 1080。

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

enter image description here

当我在外接显示器上显示应用程序时,我会注意到:

enter image description here

我唯一能做的就是将应用从一台显示器拖到另一台显示器上。

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

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

知道发生了什么事吗?

--------------- EDIT ----------------

我使用下面的代码,发现我的内部显示(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)
    }
  }

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

当我摆脱行

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
加载 main.qml main.cpp

我的问题消失了。