setShortcut的多个键盘快捷键

时间:2012-02-01 21:47:43

标签: c++ qt

我想知道是否有人知道如何为一个按钮设置多个快捷方式。例如,我有一个QPushButton,我想要链接到Return键和Enter键(键盘和数字键盘)。

如果在设计师中我输入了快捷方式字段:

Return, Enter

只有Enter响应,而不是Return。

我也试过设置Return in designer和我输入的源代码:

ui.searchButton->setShortcut( tr("Enter") );

这似乎只响应Enter(数字键盘)而不是Return(键盘)。

有谁知道如何设置QPushButton的多个快捷方式?仅供参考我正在使用Qt4.7。

3 个答案:

答案 0 :(得分:3)

作为qt菜鸟,我正在寻找一种方法来为一个按钮添加多个快捷方式。这里的答案很有帮助,但我仍然需要努力将所有部分放在一起。所以我想我会在这里发布完整的答案,希望能帮助其他跟随我的人。

我很抱歉这是用PyQt写的,但我相信它会传达这个想法。

'$s->name'

以下是生成的按钮:http://i.stack.imgur.com/tb5Mh.png(作为菜鸟,我不允许将图片直接嵌入帖子中。)

我希望这有用。

答案 1 :(得分:1)

我不使用QtCreator所以这里有两个代码解决方案,我会解决这个问题。


<强> 1
对于这些情况,我会覆盖keyPressEvent(例如您的主窗口或您希望快捷方式所在的位置)。

部首:

protected:
    virtual void keyPressEvent( QKeyEvent* e );

来源:

void main_window::keyPressEvent( QKeyEvent* e )
{
    switch( e->key() )
    {
    case Qt::Key_Enter:
    case Qt::Key_Return:
        // do what you want, for example:
        QMessageBox::information( this,
            "Success",
            "Let me guess, you pressed the return key or the enter key." );
        break;
    default:
        ;
    }

    QMainWindow::keyPressEvent( e );
}

<强> 2
我认为也可以创建和连接多个QShortcut对象。 只需创建所需的所有快捷方式,然后将activated - 信号连接到要接收快捷方式的对象的插槽。

答案 2 :(得分:1)

似乎是一个小解决方法,但您可以使用QAction设置多个shortcuts on it并将其连接到您的QPushButton。 (类似地,您可以创建多个QShortcut对象并将它们连接到按钮。)