qt - 如何检查 QML 中的颜色是否相等?

标签 qt qml qtquick2

我有以下代码:

Item {
    width:  fos.width; height: fos.height

    Rectangle {
        id: fos
        width: 120; height: 120
        color: "red"

        MouseArea {
            anchors.fill: parent
            onClicked: {
                if (fos.color == "red") fos.color = "gray"
                else fos.color = "red"
            }
        }
    }
}

我想在单击 MouseArea 时更改 Rectangle 的颜色。但是,代码不起作用。我的错在哪里?

最佳答案

问题是你的测试:

fos.color == "red" 

"red" 只是"#ff0000" 的名称或别名。您可以通过打印值来查看它,即:

//...
MouseArea {
    anchors.fill: parent
    onClicked: {
        console.log('fos.color:', fos.color); // fos.color: #ff0000
        //...
    }
}

根据 documentation您应该使用 Qt.colorEqual() 或针对 "#ff0000" 测试颜色是否相等。

关于qt - 如何检查 QML 中的颜色是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9452255/

相关文章:

c++ - Qt 模块错误 - QtOpenGL 中的 LNK 1112

c++ - 使用自定义委托(delegate)通过 TableView 编辑 QStandardItemModel

c++ - 如何在 rtl 对齐中打开右侧的子菜单?

qt - QML:如何拒绝放置操作

c++ - 从 C++ 检测静态添加的 QML 子项

c++ - 从不同的线程访问外部变量是否必须使用互斥锁?

c++ - 如何根据QSignalMapper得到QList的index

qt - 如何在 Windows 中为 Qt 应用程序生成良好的崩溃日志报告

c++ - 将 QML 链接到 C++ - 或者我应该?

c++ - 无法在基于cmake的qt项目中加载qml文件