3
我正在實施基於文本的待辦事宜程序。我有一個CommandInput
小部件,它繼承自QLineEdit
。基本上有幾個命令,從關鍵字「添加」,「刪除」,「編輯」等等開始。QLineEdit無法在焦點位置設置快捷方式
我想實現一些快捷方式。
Ctrl+A
使得當插件具有焦點,我可以setText("add \"\"")
,光標在所述第二最後的位置,因此它似乎是add "|"
Tab
使得當插件具有焦點,當用戶鍵入第一個關鍵詞,例如,add
,那麼我就可以完成命令add "|"
關鍵的問題是,當小部件具有焦點,快捷方式不工作。我試過以下方法:
1 /覆蓋keyPressEvent
。 Tab
密鑰不能按預期工作。即使它起作用,我也不知道如何爲像Ctrl+A
這樣的密鑰序列做到這一點。
void CommandInput::keyPressEvent(QKeyEvent *keyEvent)
{
switch(keyEvent->key())
{
case Qt::Key_Tab;
emit add_activated();
default:
QLineEdit::keyPressEvent(keyEvent);
}
}
2 /在初始化時創建快捷方式。這也不起作用。
CommandInput::CommandInput(QWidget *parent)
: QLineEdit(parent)
{
tab_shortcut = new QShortcut(QKeySequence("Tab"),this);
add_shortcut = new QShortcut(QKeySequence("Ctrl+A"),this);
connect(tab_shortcut, SIGNAL(activated()),
this, SIGNAL(tab_activated()));
connect(add_shortcut, SIGNAL(activated()),
this, SIGNAL(add_activated()));
}
希望你能幫我解決這個問題。謝謝!
非常感謝你!!!!!!所有組合鍵現在都在工作。儘管「Tab」仍然不起作用,但我選擇使用LeftQuotation替代方法。謝謝!=) –