我在文档中找不到任何内容。我找到了一个使用 PyQt 或其他东西的解决方案,但我宁愿不必使用它。另外,如果有信号就好了,但看起来没有。
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);
}
2.另一种方法是创建一个继承自QLineEdit的新类并重新实现keyPressEvent
:
void LineEdit::keyPressEvent(QKeyEvent* event)
{
if (keyEvent->key() == Qt::Key_Tab)
{
emit tabPressed();
return;
}
QLineEdit::keyPressEvent(event);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)