Tengo un QTableWidget
y me gustaría que presionar CTRL mientras hace clic en el encabezado de una columna marca toda la columna. Obtener el índice de la columna no es un problema ya que hay una señal Presionada que me da el índice actual de la columna en la que se hace clic. ¿Cómo puedo obtener el estado de los modificadores de teclado cuando se hace clic en una columna?Cómo detectar la tecla modificadora con el clic del mouse en Qt
Respuesta
Probar QApplication::keyboardModifiers() que siempre está disponible
En Qt 5, intente QGuiApplication::keyboardModifiers().
El estado de las teclas modificadoras del teclado se puede encontrar llamando a la función de modificadores(), heredada de QInputEvent.
sé, pero tengo ningún objeto dentro de la ranura asociada a otra sectionPressed entonces el índice de la columna. Sin evento, sin remitente, nada. – tfl
Tal vez podría guardar el estado de los modificadores en mouseReleaseEvent que debería ocurrir antes de la señal. –
esto es muy molesto, tengo que instalar un EventFilter y retire la sectionPressed manejador
ui->tableWidget->horizontalHeader()->viewport()->installEventFilter(this);
Dentro del EventFilter puedo comprobado si una tecla se ha pulsado igual que
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);
}
Esto funciona para mí.
if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) == true) {
Puede utilizar QGuiApplication::queryKeyboardModifiers()
que es más fácil de usar:
if(QGuiApplication::queryKeyboardModifiers().testFlag(Qt::ShiftModifier))
{
// Do a few things
}
- 1. Cómo detectar el estado del mouse en Qt sin MouseEvent
- 2. Detectar Mouse haga clic en ubicación
- 3. ¿Cómo detectar la inactividad del usuario en Qt?
- 4. Qt OpenGL- Cómo obtener el objeto basado en el clic del mouse
- 5. Cómo simular el clic del mouse con el control WebBrowser
- 6. Cómo simular MAYÚS + Tecla del mouse presionar en java
- 7. jQuery: detectar el clic del mouse y abrir el objetivo en la nueva pestaña
- 8. Obteniendo la ubicación del clic del mouse de una etiqueta en qt
- 9. Distinga entre hacer doble clic con el mouse y hacer clic con el mouse en wpf
- 10. Cómo detectar el estado presionada de la tecla Mayús al mover el mouse
- 11. Detectar clics del mouse en script bash
- 12. ¿Cómo detectar la inclinación de la rueda del mouse?
- 13. Detectar la posición relativa del mouse en el lienzo matplotlib
- 14. Textarea pierde el foco en el clic del mouse?
- 15. Cómo controlar el estado de la tecla modificadora global (en cualquier aplicación)?
- 16. Cómo detectar si un clic() es un clic del mouse o se activa mediante algún código?
- 17. Simular clic real del mouse
- 18. Tecla de control más rueda del mouse
- 19. Cómo detectar Alt + Enter presionado en QT
- 20. Cómo simular el clic del mouse en C#?
- 21. ¿Cómo detectar si el clic del mouse es legítimo o automático?
- 22. Deshabilitar el doble clic del mouse con javascript o jquery
- 23. qt QWidget clic
- 24. ¿Cómo simulamos un clic del mouse con Xlib/C?
- 25. ¿Cómo detectar los clics del mouse en Javascript?
- 26. Simular clic del mouse/Detectar color debajo del cursor en Python
- 27. Qt ¿Cómo deshabilitar el desplazamiento del mouse de QComboBox?
- 28. jQuery click event - ¿Cómo saber si se hizo clic con el mouse o se presionó la tecla Intro?
- 29. Liberando la captura del mouse y dejando que el clic del mouse pase
- 30. cómo cambiar la tecla modificadora de cmd a ctrl en IntelliJ en una Mac?
lo encontré todo listo – tfl
¡AHORA tropecé con esta respuesta! Después de reescribir todo como una subclase desordenada para poder acceder al objeto 'event' :-) D'oh! –
Similar a @Freedom_Ben También estaba viendo todos los ejemplos que sugieren subclasificación o filtro de eventos ... pero gracias a mi persistencia (puede ser su pereza: P) encontré esta respuesta. Funciona como un encanto ... ¡EXACTAMENTE como yo quería! Gracias Roku por su ayuda! – zeFree