Ho un QTableWidget
e vorrei che premendo CTRL mentre si fa clic sull'intestazione di una colonna segna l'intera colonna. Per ottenere l'indice della colonna non è un problema poiché c'è una sezione Pressata che mi dà l'indice corrente della colonna cliccata. Come posso ottenere lo stato di qualsiasi modificatore di tastiera quando si fa clic su una colonna?Come rilevare il tasto modificatore al clic del mouse in Qt
risposta
Prova QApplication::keyboardModifiers() che è sempre disponibile
Su Qt 5, provare QGuiApplication::keyboardModifiers().
Lo stato dei tasti di modifica tastiera può essere trovato chiamando la funzione modifiers(), ereditata da QInputEvent.
so ma non ho alcun oggetto all'interno dello slot associato alla sectionPressed altri poi l'indice di colonna. Nessun evento, nessun mittente, niente. – tfl
Forse potresti salvare lo stato dei modificatori in mouseReleaseEvent che dovrebbe verificarsi prima del segnale. –
questo è davvero fastidioso, devo installare un eventFilter e rimuovere il sectionPressed gestore
ui->tableWidget->horizontalHeader()->viewport()->installEventFilter(this);
All'interno del eventFilter posso controllare castrato un tasto è stato premuto in questo modo
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);
}
Questo funziona per me.
if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) == true) {
È possibile utilizzare QGuiApplication::queryKeyboardModifiers()
che è più semplice da usare:
if(QGuiApplication::queryKeyboardModifiers().testFlag(Qt::ShiftModifier))
{
// Do a few things
}
- 1. Come attivare un clic del mouse con il tasto sinistro del mouse in C#?
- 2. Textarea perde l'attenzione al clic del mouse?
- 3. Qt come controllare quale tasto del mouse è premuto
- 4. Rileva il tasto sinistro del mouse premi
- 5. Rileva il clic destro e sinistro del mouse su NSView
- 6. Come eseguire il binding con il tasto destro del mouse per fare clic su knockoutJs?
- 7. Come rilevare l'inclinazione della rotellina del mouse?
- 8. Distinguere tra il doppio clic del mouse e il clic del mouse nel wpf
- 9. Clic del mouse SeaDragon
- 10. Come rilevare l'inattività dell'utente in Qt?
- 11. Rileva il tasto destro del mouse Safari di Safari
- 12. DataGridView tasto destro del mouse/copia esempio?
- 13. tooltip jquery, ma al clic invece del passaggio del mouse
- 14. Come rilevare il tasto premuto in TypeScript?
- 15. Come rilevare se un clic() è un clic del mouse o attivato da un codice?
- 16. Silverlight Datagrid selezionare con il tasto destro del mouse
- 17. Vim: modifica comportamento clic del mouse
- 18. Rilevamento di un semplice clic del mouse in MFC
- 19. Perché tutti i clic intermedi in Java sono segnalati come aventi il modificatore Alt?
- 20. Come scartare il clic del mouse in TDbGrid.OnColumnMoved
- 21. Vue JS: tasto destro del mouse direttiva evento
- 22. Comprimi riga con il clic del mouse
- 23. Qt mouseMoveEvent solo quando si preme il tasto sinistro del mouse
- 24. Tenendo premuto il tasto sinistro del mouse in AutoHotkey
- 25. Come produrre dinamicamente le picturebox, tramite il clic del tasto?
- 26. perché facendo clic con il tasto destro si crea un punto arancione al centro del cerchio?
- 27. Rilevazione clic del mouse Pygame
- 28. Cambiare classe CSS nel knockout.js al clic del mouse
- 29. Mouse USB Android tasto destro del mouse comportamento corretto (ICS)
- 30. Scorrere al passaggio del mouse, fare clic per la velocità
l'ho trovato già – tfl
ORA inciampo su questa risposta! Dopo ho riscritto tutto come sottoclasse disordinato, in modo da poter ottenere l'oggetto 'event' :-) D'oh! –
Simile a @Freedom_Ben stavo anche guardando tutti gli esempi che suggeriscono la sottoclasse o il filtro eventi ... ma grazie alla mia persistenza (potrebbe essere la pigrizia: P) che ho trovato questa risposta. Funziona come un fascino ... ESATTAMENTE come volevo! Grazie Roku per il suo aiuto! – zeFree