Qt编程 —— 给程序添加快捷键事件的三种常用方法介绍

文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。


笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888

第一种方法:

第一种方法就是重写 QDialog 类的键盘事件的虚函数。
virtual void keyPressEvent(QKeyEvent *event);

// 重写键盘事件.
// 别忘了头文件<QKeyEvent>
// ClassName 定义时需要继承 QDialog
void ClassName::keyPressEvent(QKeyEvent *event)
{
    
    
    //当按下 ctrl+c 则跳出提示框.
    if (event->modifiers() & Qt::ControlModifier)
    {
    
    
        if (event->key() == Qt::Key_C)
            QMessageBox::information(this, "z", "q");
    }
}

第二种方法:

  利用 QAction 这个类,给 QAction 对象设置快捷键。

头文件 : #include <QAction>

//先定义一个QAction的对象.
QAction *action = new QAction(this);
//设置触发QAction对象的快捷操作.
action->setShortcut(tr("ctrl+s"));
//把这个QAction的对象加入到当前窗口中去.
this->addAction(action);
//连接信号与槽.连接好了以后,当你按下ctrl+s时,就会调用槽函数,也就是这里自定义的messageSlot()函数;
connect(action, SIGNAL(triggered()), this, SLOT(messageSlot()));

第三种方法:

头文件 : #include <QShortcut>

QShortcut *temp = new QShortcut(this);
//设置键值,也就是设置快捷键.
temp->setKey(tr("ctrl+r"));

//这个成员函数挺关键的,设置是否会自动反复按键;
//也就是说,当你一直按住键盘ctrl+r时,会一直不停的调用对应的槽函数.
temp->setAutoRepeat(false);

//连接信号与槽,showSlot()是自定义的槽函数!
connect(temp, SIGNAL(activated()), this, SLOT(showSlot()));

猜你喜欢

转载自blog.csdn.net/Aliven888/article/details/107516555