Mam QTableWidget
i chciałbym, aby naciśnięcie klawisza CTRL podczas kliknięcia nagłówka kolumny oznacza całą kolumnę. Uzyskanie indeksu kolumny nie stanowi problemu, ponieważ występuje sygnał sectionPressed, który daje mi bieżący indeks klikniętej kolumny. Jak mogę uzyskać stan modyfikatorów klawiatury po kliknięciu kolumny?Jak wykryć klawisz modyfikatora kliknięciem myszy w Qt
Odpowiedz
Wypróbuj QApplication::keyboardModifiers(), który jest zawsze dostępny
Na Qt 5, spróbuj QGuiApplication::keyboardModifiers().
Stan klawiszy modyfikujących klawiaturę można znaleźć, wywołując funkcję modyfikatorów() dziedziczoną po QInputEvent.
wiem, ale nie mam żadnego obiektu w związaną szczelinę do sectionPressed inne niż indeks kolumny. Bez zdarzeń, bez nadawcy, nic. – tfl
Być może można zapisać stan modyfikatorów w mouseReleaseEvent, które powinny wystąpić przed sygnałem. –
to jest naprawdę irytujące, muszę zainstalować eventFilter i usunąć sectionPressed uchwytu
ui->tableWidget->horizontalHeader()->viewport()->installEventFilter(this);
obrębie eventFilter mogę sprawdzić pogoda klucz został naciśnięty jak tak
bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
if(event->type() == QEvent::MouseButtonPress)
{
if(Qt::ControlModifier == QApplication::keyboardModifiers())
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
if(mouseEvent)
{
if(mouseEvent->button()== Qt::LeftButton)
{
ui->tableWidget->selectColumn(ui->tableWidget->itemAt(mouseEvent->pos())->column());
return true;
}
}
}
}
return QWidget::eventFilter(object,event);
}
To działa dla mnie.
if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) == true) {
Można użyć QGuiApplication::queryKeyboardModifiers()
który jest prostszy w obsłudze:
if(QGuiApplication::queryKeyboardModifiers().testFlag(Qt::ShiftModifier))
{
// Do a few things
}
- 1. Jak wykryć stan myszy w Qt bez MouseEvent
- 2. Jak mogę wykryć klawisz shift + w javascript?
- 3. Jak wykryć klawisz klawiatury wciśnięty w iphone?
- 4. Jaka jest różnica między kliknięciem i kliknięciem myszy?
- 5. Jak wykryć pochylenie kółka myszy?
- 6. Jak wykryć, czy kliknięcie() jest kliknięciem myszy lub wywołane przez jakiś kod?
- 7. Jak wykryć połączenie USB w Linuksie/Qt
- 8. Bądź Alt_R ALT (A-) klawisz modyfikujący (zamiast Meta (M) Klawisz modyfikatora)
- 9. Jak wykryć, że moja aplikacja straciła ostrość w Qt?
- 10. Jak wykrywać zdarzenie z kliknięciem prawym przyciskiem myszy w systemie Mac OS
- 11. Jak wykryć klawisz Esc Naciśnij klawisz React i jak sobie z nim radzić
- 12. Jak sprawdzić, czy naciśnięto klawisz modyfikujący (shift, ctrl, alt)?
- 13. Jak wykryć, czy aplikacja Qt GUI była bezczynna w samej aplikacji (Qt)?
- 14. Jak wykrywać naciśnięty klawisz w TypeScript?
- 15. obsługę myszy w QWS
- 16. wykryć ctrl + lewy przycisk myszy w aplikacji WinForm
- 17. Jak wykryć cel Qt Creator'S (debug/release) (Visual Studio)
- 18. Jak wykryć przyciśnięcie a mouseover jednocześnie
- 19. Jak wykrywać zatrzymanie myszy?
- 20. Ukryj domyślne opcje w menu kontekstowym z kliknięciem prawym przyciskiem myszy
- 21. Wyłącz kliknięcia myszy w Emacs
- 22. Jak wykryć, kiedy użytkownik naciśnie klawisz Esc i zrobić coś w skrypcie powłoki
- 23. Jak wykrywać podwójne kliknięcie myszy w WPF?
- 24. Jak wykryć zamknięcie modalne Materialized.js?
- 25. Jak wykryć naciśnięcie dowolnego klawisza?
- 26. Przycisk przesyłania jednym kliknięciem
- 27. Java - Czy możemy wykryć, czy naciśnięty jest klawisz bez użycia odbiornika?
- 28. Zamykanie jquery kliknięciem nadrzędnym
- 29. VS 2008 Intellisense wiszące na prawym kliknięciem
- 30. Jak wykrywać kliknięcia myszy w JavaScript?
znalazłem go już teraz – tfl
TERAZ natknąłem się na tę odpowiedź! Po przepisaniu wszystkiego jako brudnej podkategorii mogłem dostać się do obiektu 'event' :-) D'oh! –
Podobny do @Freedom_Ben Patrzyłem również na wszystkie przykłady sugerujące podklasy lub filtr zdarzeń ... ale dzięki mojej wytrwałości (może to lenistwo: P) znalazłem tę odpowiedź. Działa jak urok ... DOKŁADNIE jak chciałem! Dzięki Roku za jego pomoc! – zeFree