【发布时间】:2012-11-06 16:16:05
【问题描述】:
我正在实施一个基于文本的待办事项程序。我有一个从QLineEdit 继承的CommandInput 小部件。基本上有几个命令,以关键字“add”、“delete”、“edit”等开头。
我想实现一些快捷方式。
-
Ctrl+A这样当小部件有焦点时,我可以setText("add \"\""),光标在倒数第二个位置,所以它看起来是add "|" -
Tab这样当小部件有焦点时,当用户输入第一个关键字时,例如,add,然后我可以完成对add "|"的命令
关键问题是当小部件有焦点时,快捷方式不起作用。我尝试了以下方法:
1/ 覆盖keyPressEvent。 Tab 键无法按预期工作。即使它有效,我也不知道如何为像 Ctrl+A 这样的 keySequence 做到这一点。
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()));
}
希望您能在这个问题上帮助我。谢谢!
【问题讨论】:
标签: c++ qt user-interface qlineedit