在对话框中的 QTextEdit 中按 Tab - 更改行为

Pressing Tab in QTextEdit in Dialog - change behavior

我有 QDialog,其中包含几个按钮和一个 QTextEdit。 在 QTextEdit 中写了一些东西后,我按 Tab 键以到达其中一个按钮,但是当我按 Tab 键时,一个选项卡 space 被添加到 QTextEdit。我怎样才能改变这种行为?

您可以子类化 QTextEdit 并覆盖 keyPressEvent 以拦截 Tab 键。然后,使用 nextInFocusChain 确定下一个焦点小部件并对其调用 setFocus

大纲:

class MyTextEdit : public QTextEdit
{
public:
    MyTextEdit(QWidget *parent = 0) : QTextEdit(parent) {}

protected:
    void keyPressEvent(QKeyEvent *e) {
        if (e->key() == Qt::Key_Tab) {
            nextInFocusChain()->setFocus(Qt::TabFocusReason);
        } else {
            QTextEdit::keyPressEvent(e);
        }
    }
};

您可以使用 QTextEditsetTabChangesFocus 方法:

yourTextEdit.setTabChangesFocus(true);