Tengo QTextEdit y quiero detectar la tecla "Alt + Enter" presionada (ambas teclas juntas). He instalado el filtro de eventos para detectar los eventos de pulsación de tecla y cuando presiono Enter puedo detectar la tecla, pero ¿cómo puedo detectar que también se presiona la tecla "Alt"?Cómo detectar Alt + Enter presionado en QT
Intenté recordar la tecla "Alt" presionar & liberar (con variable estática) pero eso no ayuda si el usuario suelta la tecla Alt fuera de la aplicación.
ver adjunto mi código.
bool MTGridEditDelegate::eventFilter(QObject *obj,QEvent *event){
static bool pressed = false;
if(event->type() == QEvent::KeyPress)
{
if(static_cast<QKeyEvent*>(event)->key() == Qt::Key_Alt)
{
pressed = true;
qDebug("Alt Pressed");
}
}
if(event->type() == QEvent::KeyRelease)
{
if(static_cast<QKeyEvent*>(event)->key() == Qt::Key_Alt)
{
pressed = false;
qDebug("Alt Released");
}
}
if(event->type() == QEvent::KeyPress)
{
int key = static_cast<QKeyEvent *>(event)->key();
qDebug("The Key is : %d",key);
switch (static_cast<QKeyEvent *>(event)->key())
{
case Qt::Key_Backtab:
break;
case Qt::Key_Tab:
case Qt::Key_Enter:
case Qt::Key_Return:
{
QWidget *editor = ::qobject_cast<QWidget*>(obj);
if(!pressed)
{
emit commitData(editor);
emit closeEditor(editor, NoHint);
}
else
{
MQTextEdit *editBox = qobject_cast<MQTextEdit *>(editor);
if (editBox)
{
QString text = editBox->toPlainText();
text = text + QChar('\n');
//text = text + QChar('\r');
editBox->setPlainText(text);
}
}
break;
}
case Qt::Key_Escape:
// CustControlFocusLost();
break;
default:
return false;
}
return true;
}
else
{
return QObject::eventFilter(obj,event);
}
}
gracias por su ayuda, eso es lo que estaba buscando – maxchirag
he thried éste bt im no obtener ninguna salida ... es mi código .. vacío MainWindow :: keyPressEvent (* QKeyEvent evento) { if ((event-> key() == Qt :: Key_U)) { qDebug() << "u"; } evento-> accept(); } –
Además, también puede usar '(e-> modificadores() == (Qt :: ControlModifier | Qt :: AltModifier))' si necesita detectar AltGr. Tenga en cuenta que también se detectará ALT + CTRL. – Safoyeth