Qt 是否使QLineEdit检测选项卡按键事件?

Qt 是否使QLineEdit检测选项卡按键事件?,qt,Qt,我在文件里找不到任何东西。我找到了一个使用PyQt之类的解决方案,但我不想使用它。另外,如果有一个信号的话会很好,但是看起来没有。您应该能够使用QObject::installEventFilter(QObject*)截获按键事件。这里有一个例子:。您应该能够使用QObject::installEventFilter(QObject*)截取按键事件。这里有一个例子:.1.当您按照Sam的建议安装事件过滤器(m\u lineEdit->installEventFilter(this);)时,您需要

我在文件里找不到任何东西。我找到了一个使用PyQt之类的解决方案,但我不想使用它。另外,如果有一个信号的话会很好,但是看起来没有。

您应该能够使用
QObject::installEventFilter(QObject*)
截获按键事件。这里有一个例子:。

您应该能够使用
QObject::installEventFilter(QObject*)
截取按键事件。这里有一个例子:.

1.当您按照Sam的建议安装事件过滤器(
m\u lineEdit->installEventFilter(this);
)时,您需要处理
QEvent::KeyPress
并检查键是否相等
Qt::key\u选项卡

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 what you need;
             return true;
         }             
  }
     // pass the event on to the parent class
     return QMainWindow::eventFilter(obj, event);
}

1.当您按照Sam建议安装事件筛选器时(
m_lineEdit->installEventFilter(this);
),您需要处理
QEvent::KeyPress
,并检查键是否相等
Qt::key_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 what you need;
             return true;
         }             
  }
     // pass the event on to the parent class
     return QMainWindow::eventFilter(obj, event);
}