tipos tabuladores tabulaciones hacer eliminar como qt event-handling qt4 qt5 keyevent

qt - tabuladores - La tecla de tabulación de intersección se pulsa para gestionar el cambio de enfoque manualmente



tabulaciones en word 2016 (4)

Deberá instalar un filtro de eventos en su ventana principal para recibir los eventos. Puede usar el método installEventFilter para esto. Otra opción es anular el método keyPressEvent para manejar las teclas presionadas.

Quiero interceptar la tecla Tab presionar en mi ventana principal para evitar que Qt cambie de foco. Esto es lo que he intentado hasta ahora:

bool CMainWindow::event(QEvent * e) { if (e && e->type() == QEvent::KeyPress) { QKeyEvent * keyEvent = dynamic_cast<QKeyEvent*>(e); if (keyEvent && keyEvent->key() == Qt::Key_Tab) return true; } return QMainWindow::event(e); }

Esto no funciona, event no se llama cuando presiono Tab . ¿Cómo lograr lo que quiero?


Reimplemento del virtual bool QApplication::notify(QObject * receiver, QEvent * e) y pegar el código de mi pregunta allí funciona.


La manera más elegante que encontré para evitar el cambio de foco es reimplementar en tu clase derivada de QWidget el método bool focusNextPrevChild(bool next) y simplemente devolver FALSE . En caso de que quiera permitirlo, devuelva TRUE .

Al igual que otras teclas, ahora también se obtiene la clave Qt::Key_Tab en keyPressEvent(QKeyEvent* event)


Puede lograrlo utilizando la propiedad setFocusPolicy( Qt::NoFocus) de QWidget. Puede establecer la política de Enfoque en el widget que no requiere el enfoque de pestaña. Creo que la razón por la que el controlador de eventos no está llamando, porque la pestaña es administrada internamente por Qt framework. Por favor, consulte la API de QWidget::setTabOrder , que es estática.