QT 按钮控件设置快捷键

    • 概要
    • 使用keyPressEvent 函数进行按按事按捕获
      • 使用方法
        • 头文件里重写事件
        • cpp文件
      • keyPressEvent需要注意的地方
    • 用setShortcut设置快捷键
    • designer 上属性里面设置快捷键

概要

QT按钮主要有QToolButton 和 QPushButton, 它们很多时候都需要设置快捷键, 这样用户操作起来就更为方便。 设置快捷键的方式是有几种的,下面总结了一下, 项目中,使用时,就看怎么方便,快捷怎么使用吧。


使用keyPressEvent 函数进行按按事按捕获


使用方法


头文件里重写事件:

virtual void keyPressEvent(QKeyEvent* event);

cpp文件

void Widget::keyPressEvent(QKeyEvent* event)
{
    if(event->key() == Qt::Key_Left) {
        function1();
    } else if(event->key() == Qt::Key_Right) {
        function2();
    }
    ...
}

keyPressEvent需要注意的地方

它并不像mousePressEvent可以直接向上面一样用,上面的代码,实际运行起来是不起作用的。
它需要对对应的按键设置焦点规则,否则是不能聚焦的, 所以上面的keyPressEvent 事件是不能够被捕获的。
需要进行代码焦点规则设置:
ui->leftButton->setFocusPolicy(Qt::StrongFocus);
ui->rightButton->setFocusPolicy(Qt::StrongFocus);

我觉得这个应该这样来理解:
一台电脑通常是只插入一个鼠标,所以不需要这样的设置。但一个界面上的控件就可能有多个, 而且每个都可能用keyPressEvent事件,而这个事件在这么多的控件下面捕获哪个控件呢? 所以就很难辨别,这时我们对应的控件来setFocusPolicy,就让系统知道是那些控件需要进行事件捕获。


用setShortcut设置快捷键

在上面使用keyPressEvent的方法,我们明显地看到过程是稍稍麻烦一点的,那么有没有更简便一点的呢, 那就是用setShortcut来设置, 这种更适合用代码写出来的控件,用designer拖的控件有更简单的,虽然它们是一样的。

如:
leftButton->setShortcut(QKeySequence(QLatin1String(“Left”)));
rightButton->setShortcut(QKeySequence(QLatin1String(“Right”)));


designer 上属性里面设置快捷键

在控件对应的ABstractButton属性里面,有一个shortcut属性框,当我们选择它时,在键盘上按哪个键,这个键就直接设置为快捷键, 当我们的控件与对应的槽函数绑定时就会起作用。

QT 按钮控件设置快捷键_第1张图片

你可能感兴趣的:(QT学习之路)