QT 按钮控件设置快捷键

概要

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

这里写图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值