我有这段代码:
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
if (event->type() == QEvent::KeyPress)
{
if (keyEvent->key() == Qt::Key_Tab)
// do something
}
}
现在,我正在QTextEdit中输入。假设我按下tab键,那么QTextEdit中就会出现一个制表符。但是如果我想阻止这种情况发生怎么办?类比一下,如果你熟悉emacs:当处于正确的环境(比如c++模式)时,你可以按下tab键,代码行就会跳到正确的位置(进行缩进)。再次按下tab键后,什么也不会发生。这是因为代码行已经处于正确的位置。
有人知道如何实现吗?我猜我可以让tab事件在QTextEdit中显示,然后删除先前的字符(或者任何定义为)。