如何在QLineEdit中键入TAB?

问题描述

当我在QLineEdit中键入tab时,我转到下一个小部件。如何禁用此行为并在QLineEdit框中键入TAB字符?

解决方法

您需要通过手柄检查按键:

bool MainWindow::eventFilter(QObject *obj,QEvent *event)
{
     if (obj == m_lineEdit) 
     {
        if (event->type() == QEvent::KeyPress) 
        {
            QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);

            if (keyEvent->key() == Qt::Key_Tab)
            {
                //do here
                return true;
            }             
     }

        //return event to the parent class
        return QMainWindow::eventFilter(obj,event);
}

或者您可以创建继承自QLineEdit的类并重载该方法:

void LineEdit::keyPressEvent(QKeyEvent* event)
{
     if (keyEvent->key() == Qt::Key_Tab)
     {
        emit tabPressed();
        return;
     }

     QLineEdit::keyPressEvent(event);
}