QT 按钮控件设置快捷键

来源:互联网 发布:mac删除windows启动项 编辑:程序博客网 时间:2024/05/16 18:10
    • 概要
    • 使用keyPressEvent 函数进行按按事按捕获
      • 使用方法
        • 头文件里重写事件
        • cpp文件
      • keyPressEvent需要注意的地方
    • 用setShortcut设置快捷键
    • designer 上属性里面设置快捷键

概要

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


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


使用方法


头文件里重写事件:

virtual void keyPressEvent(QKeyEvent* event);
  • 1

cpp文件

void Widget::keyPressEvent(QKeyEvent* event){    if(event->key() == Qt::Key_Left) {        function1();    } else if(event->key() == Qt::Key_Right) {        function2();    }    ...}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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属性框,当我们选择它时,在键盘上按哪个键,这个键就直接设置为快捷键, 当我们的控件与对应的槽函数绑定时就会起作用。

这里写图片描述