我在Ubuntu 14.04上使用Qt的示例 Qt Quick Controls 2 和Qt v5.7,我观察到不同的显示行为,具体取决于我显示的显示器。
我有2台显示器:我的笔记本电脑的内置显示器和外接显示器。两者都是1920 x 1080。
当我在笔记本电脑的显示器上显示应用程序时,我会注意到:
当我在外接显示器上显示应用程序时,我会注意到:
我唯一能做的就是将应用从一台显示器拖到另一台显示器上。
外接显示器的显示效果不错,而不是笔记本电脑的显示屏。
我在所有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)
}
}
答案 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 我的问题消失了。