问题描述
我有一个在 Ubuntu 和 RaspBerry Pi 3B+ 上运行的 Qt/QML 程序。该程序在两个平台上都运行良好,但是 Pi 具有高 DPI 屏幕,因此我在该设备上将 QT_SCALE_FACTOR 设置为 1.3,以使控件显示正确的大小。除了一件事之外,它可以完美运行:ComboBox 和 SpinBox 控件上的指标绘制的大小与未设置 QT_SCALE_FACTOR 时的大小相同,并且如果应用了 QT_SCALE_FACTOR,它们将填充的矩形的其余部分用随机像素填充。在 Ubuntu 上设置 QT_SCALE_FACTOR 没有任何问题。
我尝试用自定义指标替换指标,但结果相同。
不设置 QT_SCALE_FACTOR 会产生正确呈现的指标。
这是在 Linux pi3 4.19.75-v7+ 上使用 Qt 5.13.2 和 QtQuick.Controls 2.5 #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l GNU/Linux
下图说明了 QT_SCALE_FACTOR=2 时的行为:
ComboBox {
id: cb
...
width: 200
...
indicator: Canvas {
id: canvas
x: cb.width - width - cb.rightPadding
y: cb.topPadding + (cb.availableHeight - height) / 2
width: 12*2
height: 8*2
contextType: "2d"
Connections {
target: cb
function onpressedChanged() { canvas.requestPaint(); }
}
onPaint: {
var context = getContext("2d");
context.reset();
context.beginPath();
context.moveto(0,0);
context.lineto(width,0);
context.lineto(width / 2,height);
context.closePath();
context.fillStyle = cb.pressed ? "#17a81a" : "#21be2b";
context.fill();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)