Как скрыть указатель мыши в приложении Qt при запуске?

У меня есть небольшое приложение Qt, которое отображает изображение на экране (подробнее об этом, включая исходный код, здесь: Qt: изменить прозрачность альфа-канала безоконной QLabel).

По умолчанию Qt вставляет указатель мыши поверх моего изображения. Для моего приложения мне не нужно какое-либо физическое взаимодействие пользователя с Qt и, следовательно, мне не нужен указатель мыши.

Я использовал следующий код, чтобы скрыть указатель мыши, но он скрывает мышь только после физического перемещения мыши и только в пределах отображаемого изображения. Если мое изображение меньше области отображения, я могу свободно перемещать указатель мыши по этому пространству.

int main (int argc, char *argv[])
{
    QApplication app(argc, argv);

    // Try to hide the cursor
    app.setOverrideCursor(QCursor(Qt::BlankCursor));

    return app.exec();
}

Как я могу скрыть указатель мыши при запуске приложения без необходимости фактически перемещать мышь?

Я использую Qt версии 4.8.4 на своем встроенном устройстве.

(Кроме того, я запускаю свое приложение без окна QWidget. Поэтому я ищу решения, которые этого не требуют).


person Josh Kurland    schedule 16.05.2017    source источник
comment
См. также Скрыть курсор в полноэкранном режиме с помощью Qt 4.8?   -  person jww    schedule 10.12.2019


Ответы (2)


Я нашел параметр командной строки «-nomouse», который, похоже, помогает. Это не мое идеальное решение, но пока оно работает.

$ ./my-Qt-application -nomouse

http://doc.qt.io/qt-4.8/qt-embedded-running.html (ищите -nomouse в параметрах командной строки)

person Josh Kurland    schedule 16.05.2017

Попробуйте этот код:

app.setCursorVisible(false);

или это :

app.setOverrideCursor(Qt::BlankCursor);
person BattleTested_закалённый в бою    schedule 16.05.2017
comment
Спасибо, но ни одно из этих решений не работает. Класс QApplication не имеет члена с именем setCursorVisible. Кроме того, setOverrideCursor имеет прототип QGuiApplication::setOverrideCursor(const QCursor &cursor). Я почти уверен, что то, что вы предоставили здесь, эквивалентно тому, что я написал выше. Несмотря на это, он не удаляет курсор при запуске приложения. - person Josh Kurland; 16.05.2017
comment
@JoshKurland эти коды ошибаются? или ошибка компиляции? - person BattleTested_закалённый в бою; 16.05.2017
comment
setCursorVisible недоступен для класса QApplication в Qt 4.8. Однако он доступен для класса QWSServer (doc.qt.io/qt -4.8/qwsserver.html#setCursorVisible). К сожалению, это не будет работать в моем приложении. - person Josh Kurland; 16.05.2017
comment
@JoshKurland взгляните на эту ссылку. может вам помочь. - person BattleTested_закалённый в бою; 16.05.2017