У меня есть встроенный сенсорный экран под управлением Linux, и мое приложение — Qt / C ++.
Я запускаю приложение с функцией main, которая выглядит следующим образом:
#include <QApplication>
#include <QThread>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// Create the app
QApplication app(argc, argv);
// Hide the pointer
app.setOverrideCursor( QCursor( Qt::BlankCursor ) );
// Create main window
MainWindow *window = new MainWindow;
// Set up the UI and execute the App
window->show();
app.exec();
// tidy up
delete(window);
return 0;
}
Проблема, которая у меня есть, заключается в том, что при запуске программы курсор показывает. Но как только я касаюсь экрана (приложение является полноэкранным приложением), курсор исчезает.
Я читал, что это может быть простой проблемой, т. Е. Мое приложение не в фокусе или что-то в этом роде. Как я могу убедиться, что мое приложение находится в фокусе при запуске?
Или же
Что-то я делаю не так, чтобы скрыть указатель мыши?
—РЕДАКТИРОВАТЬ—
Если я уберу строку app.setOverrideCursor( QCursor( Qt::BlankCursor ) );
тогда я сосредоточился на своем приложении. Так что эта строка почему-то заставляет мое приложение терять фокус.
Для быстрого взлома я поместил QTimer в MainWindow и установил его на 100 мс (только для того, чтобы он обрабатывался только после начала обработки события — т.е. после app.execute ()). Затем я подключил событие таймера к функции слота, которую я вызываю «getFocusOnMeNow ()», в которой я имею:
this->activateWindow();
this->setFocus();
И это работает.
Так что теперь я хотел бы привести это в порядок. Какую функцию / слот я могу вызвать AFTER app.execute () в MainWindow, чтобы получить фокус? Я не вижу слот MainWindow :: start (), который я могу перегрузить …?
пытаться
app.setCursorVisible(false);
может это поможет тебе.
Других решений пока нет …