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 我的问题消失了。
我在 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 我的问题消失了。