Qt QML中if语句的问题

Qt QML中if语句的问题,qt,qt-quick,Qt,Qt Quick,我正在努力学习Qt和QML,我遇到了麻烦。 我希望能够确定显示器的屏幕系数并相应地选择背景图像,但我不能。 这是我的代码: import QtQuick 2.2 import QtQuick.Window 2.2 Image { id: root width: screenGeometry.width height: screenGeometry.height property real ratio: root.width / root.height

我正在努力学习Qt和QML,我遇到了麻烦。 我希望能够确定显示器的屏幕系数并相应地选择背景图像,但我不能。 这是我的代码:

import QtQuick 2.2
import QtQuick.Window 2.2

Image {
    id: root
    width: screenGeometry.width
    height: screenGeometry.height
    property real ratio: root.width / root.height

    source: {
        source = "../components/artwork/background.png"
        if (ratio == 16.0 / 9.0) {
            source = "../components/artwork/background_169.png"
        }
        else if (ratio == 16.0 / 10.0) {
        source = "../components/artwork/background_1610.png"
        }
        else if (ratio == 4.0 / 3.0) {
            source = "../components/artwork/background_43.png"
        }
    }
    fillMode: Image.PreserveAspectFit
}
独立于屏幕大小,它总是选择通用的。 从我在调试问题时看到的情况来看,似乎在if语句中不理解variable ratio的值。 搜索类似的主题,我已经找到了,但是我仍然看不到错误


非常感谢你的帮助

你确定你的问题不是“==”吗。比较双精度与'=''几乎总是一个错误。不能比较两个浮点数。将它们与一个小ε1E-6进行比较,或者使用一些内置的方法,如QtC++中的QFuffyIn比较,或者更好的是,将图像分配到比率范围(If比x……如果是比率>Y),并且剪辑或缩放它们,比例不匹配。谢谢!我像个初学者一样忽略了这一点!非常感谢您的帮助!