在对话框中的 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);
}
}
};
您可以使用 QTextEdit
的 setTabChangesFocus 方法:
yourTextEdit.setTabChangesFocus(true);
我有 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);
}
}
};
您可以使用 QTextEdit
的 setTabChangesFocus 方法:
yourTextEdit.setTabChangesFocus(true);