1

我有 ImageButton.qml,当用户按住按钮时应该会改变图像。

import QtQuick 2.0

Image {
    id: svg

    property string idleImage
    property string hoverImage

    signal clicked

    state: "idle"

    source: state === "idle" ? idleImage : hoverImage

    onSourceChanged: {
        console.log("source = " + source)
    }

    MouseArea {
        id: mouseArea
        anchors.fill: parent
        acceptedButtons: Qt.LeftButton

        onPressedChanged: {
            svg.state = pressed ? "hover" : "idle"
        }

        onClicked: svg.clicked()
    }
}

但图像不会立即改变。只有当我按住按钮几秒钟时它才会改变。当我立即按下并释放鼠标按钮时,我从未看到悬停图像。onSourceChanged 立即执行并输出到控制台正确的图像源。这个奇怪的错误只有在我使用QQuickWidget. 当我不使用小部件时,但 qml 只有一切都按预期工作。

4

1 回答 1

0

我发现了这个问题。我QOpenGLWidget在主窗口中使用。我在paintGL中调用了更新方法。

void Workspace::paintGL() {
    QOpenGLWidget::paintGL();
    workspaceDrawer.draw();
    update();
}

我用计时器替换了更新调用,每 1000 / 60 毫秒运行一次。问题消失了。奇怪的是,它只有在按下鼠标按钮时才会重现,否则一切都会正确更新。

于 2018-06-01T09:43:58.700 回答