QML Источник изображения не обновляется при нажатии мыши - PullRequest
0 голосов
/ 30 мая 2018

У меня есть 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 все работает как положено.

1 Ответ

0 голосов
/ 01 июня 2018

Я нашел проблему.Я использую QOpenGLWidget в главном окне.И я вызвал метод обновления в paintGL.

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

Я заменил вызов обновления таймером, работающим каждые 1000/60 миллисекунд.И проблема исчезла.Странно, что он воспроизводился только при нажатии кнопки мыши, иначе все обновлялось правильно.

...