[英]Qt How to stop shift-tab from changing widget focus?
我正在嘗試設置一個文本編輯,它執行 shift+tab 刪除代碼編輯器所做的縮進; 但我無法響應 shift+tab,因為它會更改小部件焦點。
我嘗試在主 window 中覆蓋事件 function ,但這沒有用; 然后我在所有小部件上嘗試了事件過濾器,但沒有奏效; 然后我嘗試像這樣覆蓋 QApplication::notify :
class MyApplication : public QApplication
{
Q_OBJECT
public:
MyApplication(int argc, char *argv[]) : QApplication(argc, argv) { }
virtual ~MyApplication() = default;
bool notify(QObject * o, QEvent *e) override
{
if (e->type() == QEvent::KeyPress)
{
QKeyEvent* k = static_cast<QKeyEvent*>(e);
if (k->key() == Qt::Key_Tab && dynamic_cast<QPlainTextEdit*>(focusWidget()))
{
// filter tab out
return false;
}
}
return QApplication::notify(o, e);
}
};
那沒有用; 此外,它在 QCoreApplication::arguments 中崩潰,除非我出於某種原因從 valgrind 內部運行應用程序。
不管我沒有想法,我怎樣才能阻止 shift+tab 改變焦點?
如果您使用的是QTextEdit
或QPlainTextEdit
,這很可能,您可以使用tabChangesFocus
屬性設置 Tab 行為。 See https://doc.qt.io/qt-6/qtextedit.html#tabChangesFocus-prop andhttps://doc.qt.io/qt-6/qplaintextedit.html#tabChangesFocus-prop
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.