У меня есть приложение Qt, работающее в Mac OS X. У меня проблема с предустановленным приложением «Grab». Мое приложение занимает полный экран, когда оно переключается из другого приложения с помощью клавиши Command + Tab, поверх него нет другого окна. Но есть исключение с «Grab»: если я запускаю Grab, перехожу в меню Capture / Select, появляется всплывающее окно Grab, когда я использую Command + Tab для переключения в свое приложение, Grab находится поверх моего полноэкранного окна. Я сделал следующее в моем приложении, чтобы выключить плавающее окно:
вызовите setWindowState (Qt :: WindowActive) в paintEvent (QPaintEvent * pEvent) только один раз, это заставит мое окно получить фокус, протестировано, было вызвано focusInEvent (QFocusEvent * e).
Но Grab все еще там. Я обнаружил, что щелчок мышью в моем окне отключает выигрыш Grab с плавающей запятой, поэтому я пытался смоделировать щелчок мышью, когда моя победа стабильна, используя что-то вроде:
QPoint pos( 1, 1 );
QWidget *w = this; //qApp->widgetAt(mapToGlobal(pos));
QMouseEvent *press = new QMouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::postEvent(w, press);
QMouseEvent *release = new QMouseEvent(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::postEvent(w, release);
mousePressEvent () и mousePressRelease () — триггер, поэтому он успешен. Но не влияет на окно Grab.
Вызовите show (), lift (), activWindow () для всех topLevelWidgets () тоже не работает.
Мой виджет получен из QScrollArea, -> QAbstractScrollArea, -> QFrame, -> QWidget
Мой виджет запускается из потока, поток из QMainWindow.
Итак, мои вопросы:
1. есть ли способ ДЕЙСТВИТЕЛЬНО симулировать щелчок мыши, что означает, что я могу видеть щелчок мыши на экране?
2. любой другой способ убить победу Grab?
Спасибо
Задача ещё не решена.
Других решений пока нет …