zoukankan      html  css  js  c++  java
  • Qt 键盘事件(捕获键盘按下、松开事件)

    QT 之键盘事件(捕获键盘按下、松开事件))
    我们在做软件时候,经常会碰到这样的场景,比如按下F5进行刷新功能,按下F1进行帮助之类的快捷键方式。那么在QT中该怎样做呢?

    查阅文档,QT已经实现了这一系列的键盘事件

    1 void QWidget::keyPressEvent(QKeyEvent *event)   //键盘按下事件
    2 void QWidget::keyReleaseEvent(QKeyEvent *event) //键盘松开事件

    这样两个都基本上能够满足一般的需求了,但是前提是已经获得焦点的控件已经获取焦点。具体怎么使用呢?

    在控件的头文件.h中进行声明:

    1 protected:
    2     virtual void keyPressEvent(QKeyEvent *ev);
    3     virtual void keyReleaseEvent(QKeyEvent *ev);

    在.cpp中进行实现相应的功能:

     1 void MainForm::keyPressEvent(QKeyEvent *ev)
     2 {
     3     if(ev->key() == Qt::Key_F5)
     4     {
     5        ui->stackedWidget->reloadPage();
     6        return;
     7     }
     8  
     9     QWidget::keyPressEvent(ev);
    10 }
    11  
    12 void MainForm::keyReleaseEvent(QKeyEvent *ev)
    13 {
    14     if(ev->key() == Qt::Key_F5)
    15     {
    16        ui->stackedWidget->reloadPage();
    17        return;
    18     }
    19  
    20     QWidget::keyReleaseEvent(ev);
    21 }

    在一些程序中,我们发现这样并不好使,怎么回事呢? 这时候可以试试在构造函数中添加这个函数,使其具有捕获键盘事件的能力:

    this->grabKeyboard();
  • 相关阅读:
    js原型对象与Java类的比较
    javascript特效--制作背景电子钟(整点时祝贺生日快乐)
    Java web MVC开发模式入门感悟
    重新审视面向对象编程
    10-排序4 统计工龄(20 分)
    基数排序
    表排序
    快速排序
    09-排序3 Insertion or Heap Sort(25 分)
    09-排序2 Insert or Merge(25 分)
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14184163.html
Copyright © 2011-2022 走看看