Изменить форму курсора на 1 секунду (продолжительность) - PullRequest
0 голосов
/ 09 июня 2019

У меня есть область мыши.

MouseArea {
    id: viewportMouseArea
    // ...
}

При получении сигнала я меняю курсор shape :

onStatusChanged: {
    viewportMouseArea.cursorShape = (myScene.status == MyScene.StatusForbidden) ? Qt.ForbiddenCursor : Qt.ArrowCursor
}

Приведенная выше логика работает нормально.

Я намереваюсь изменить логику, чтобы при получении сигнала я менял форму курсора в течение 1 секунды , а затем через 1 секунду возвращался к форме курсора по умолчанию. Примерно такой псевдокод:

onStatusChanged: {
    if ( myScene.status == MyScene.StatusForbidden ) {
        for-1-second-do:
            viewportMouseArea.cursorShape = Qt.ForbiddenCursor
        After-1-second-do:
            viewportMouseArea.cursorShape = Qt.ArrowCursor // default cursor shape
    }
}

Какая лучшая практика для этого?

1 Ответ

0 голосов
/ 09 июня 2019

Я реализовал 1-секундное изменение формы курсора, используя Таймер , предложенный @eyllanesc.Работает нормально:

MyScene {
    id: myScene

    onStatusChanged: {
        if ( myScene.Status === MyScene.StatusForbidden ) {
            viewportMouseArea.cursorShape = Qt.ForbiddenCursor
            timerForbidden.restart()
        }
    }

    property Timer timer: Timer {
        id: timerForbidden
        interval: 1000 // milliseconds
        running: false
        repeat: false
        onTriggered: { // triggered() signal is emitted when the Timer times out.

            viewportMouseArea.cursorShape = Qt.ArrowCursor // Default cursor shape
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...