.h文件中定义

/** 设置键盘按键状态 */
typedef enum
{KEY_STATE_Release = 0,   // 键盘按键状态ReleaseKEY_STATE_Press,    // 键盘按键状态Press
}E_KEY_STATE;E_KEY_STATE alt_key;
E_KEY_STATE ctrl_key;
E_KEY_STATE shift_key;
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);

这里主要为了获取按键ctrl和alt以及shift按键按下和松开来达到对QTableWidget中的内容进行多选

//按键按下
void record::keyPressEvent(QKeyEvent *event)
{switch(event->key()){case Qt::Key_Alt:alt_key = KEY_STATE_Press;break;case Qt::Key_Control:ctrl_key = KEY_STATE_Press;break;case Qt::Key_Shift:shift_key = KEY_STATE_Press;break;}if((alt_key == KEY_STATE_Press && ctrl_key == KEY_STATE_Press) ||  shift_key == KEY_STATE_Press){QList<QTableWidgetItem*> items1 = ui->tableWidget->selectedItems();if(!items1.isEmpty()){int count = items1.count();//获取该行的成员数int row = ui->tableWidget->row(items1.at(0));// 获取该行的行号for ( int i=0; i!=tabrow_nuamber.size(); ++i ){if ( tabrow_nuamber.at(i) == row ){tabrow_nuamber.removeAt(i);for(int t =0;t<count;t++){QTableWidgetItem *item = items1.at(t);  //该行列的itemif(t == 1){item->setText(" ");}item->setBackgroundColor(QColor(255,255,255));}return ;}}tabrow_nuamber.append(row);for(int i =0;i<count;i++){QTableWidgetItem *item = items1.at(i);  //该行列的itemitem->setBackgroundColor(QColor(100,100,100));if(i == 1){item->setText("*");}}return ;}}
}
//按键松开
void record::keyReleaseEvent(QKeyEvent *event)
{switch(event->key()){case Qt::Key_Alt:alt_key = KEY_STATE_Release;break;case Qt::Key_Control:ctrl_key = KEY_STATE_Release;break;case Qt::Key_Shift:shift_key = KEY_STATE_Release;break;}
}

但是这引入了一个问题,那就是当前界面想要使用按键捕获,就需要在切换到该界面时调用:
grabKeyboard()
那么在这个例子中就是调用my_record->grabKeyboard();到达获取键盘的按键捕获
但是如果这个界面获取键盘捕获没有释放会导致其他界面不能正常获取键盘,不能输入
所以在切换至其他界面时需要调用my_record->releaseKeyboard();释放键盘捕获

但是使用grabKeyboard() 发现如果界面切换比较多,会导致有的界面不能正常通过键盘输入
所以最好的办法就是将keyReleaseEvent和keyPressEvent在主界面定义,然后发出信号在子界面进行处理

Qt获取键盘按键ctrl和alt以及shift按键按下和松开相关推荐

  1. qt Event Filter 控制Ctrl Shift Alt键

    一直对Event Filter似懂非懂, 通过看C++ GUI Programming with Qt4, Second Edition, 争取搞明白. 顺便自己把英文翻译成中文, 算是自己做的笔记了 ...

  2. Qt 界面获取键盘Enter键

    在Qt界面如何获取键盘的Enter按键或者数字键盘的Enter按键 以下代码亲测有效! void GuiCoordPoint::keyPressEvent(QKeyEvent *event) {swi ...

  3. 屏蔽Windows按键(除却ALT+CTRL+DELETE)

    钩子(hook),指用api来提前拦截并处理windows消息的手段. 全局钩子是系统钩子的一种,当指定的一些消息被系统中任何应用程序所处理时,这个钩子就被调用. ALT+CTRL+DELETE是微软 ...

  4. 【Qt】按键事件:Alt+F4

    1.问题描述 在嵌入系统上,运行Qt程序,使用Alt+F4关闭时,这个常用的组合快捷键失效. 2.解决方法 在Qt程序中,添加Alt+F4组合按键事件,代码如下: void MainWindow::k ...

  5. JavaScript 获取键盘事件(键盘某个按键被按下)

    键盘事件(Keyboard Events) 属性 值 描述 onkeydown script 当按下按键时运行脚本 onkeypress script 当按下并松开按键时运行脚本 onkeyup sc ...

  6. 操作系统是如何获取键盘按键的

    本文是<操作系统:以程序员的角度>第三章,本章的主题是从程序员的角度来理解操作系统到底是如何工作的.本篇承接上文<以发展的眼光来看到操作系统>以下为本篇目录: CPU一次只能做 ...

  7. c# 获取键盘的输入

    Console 类公开了三个方法获取键盘的输入,分别是Read .Readkey.ReadLine Read方法: 每次只能读入一个字符,如果没有字符可以读,返回-1,Read方法是不会马上读取的,读 ...

  8. Unity Input类以及获取键盘键位的值

    一般使用的input类是用来获取鼠标和键盘的 获取鼠标 括号里写0.1.2,分别代表鼠标左键,鼠标右键,鼠标滑轮. Input.GetMouseButtonDown();//获取鼠标按下 Input. ...

  9. qt之键盘的设计及QlineEdit内容读取

    第一阶段----找到syszuxpinyin源码 与大部分人一样,碰到一个问题不会解决,先问一下百度大神怎么看,网上搜QT软键盘,有各种各样的解决方法,有些我也下载运行了,不是很好用,有些还需要钱,对 ...

  10. php接收键盘事件,js获取键盘事件的方法实例

    本文主要和大家分享js获取键盘事件的方法实例,希望能帮助到大家. document.οnkeydοwn=function(event){ var e = event || window.event | ...

最新文章

  1. mysql导出为lua配置表文件_利用lua生成一个导出数据库的bat脚本文件
  2. WINCE创建快捷方式
  3. /bin/bash: jar: command not found
  4. System.Web.HttpRequestValidationException: 从客户端(txtName=fd)中检测到有潜在危险的 Request.Form 值...
  5. 四川c语言二级成绩查询,四川省计算机等级考试二级C语言考试分析(hcy__ ).ppt
  6. layui修改table中的按钮_layui数据表格中如何设置按钮切换(是否置顶)与分页居中...
  7. python常量变量和对象_Python学习笔记——变量和常量
  8. 3.Prometheus 监控技术与实践 --- Exporter
  9. Java Annotation 刷课笔记(二)
  10. 【2021】【论文笔记】太赫兹量子阱光电探测器——
  11. linux nodejs 502错误,node.js – NPM安装失败,出现502错误
  12. VScode 光标乱跳 光标自动跳动问题
  13. 前端搞一个扭蛋抽奖小动画?
  14. Improving Twitter Sentiment Classification Using Topic-Enriched Multi-Prototype Word Embeddings
  15. 从两个角度谈谈:什么是产品视角
  16. 百度地图怎么查看全景(教程)
  17. 时空大数据可视化专栏
  18. blogbus.com(博客大巴)XSS跨站漏洞
  19. MYSQL基于三表的RBAC(可直接拿去CV)
  20. mongrel cluster

热门文章

  1. android 侧滑删除方法,Android recyclerview实现拖拽排序和侧滑删除
  2. 用 Python 实现黑客帝国中的数字雨落既视感
  3. 工业大数据竞赛的轴承数据集
  4. Error500错误的解决方法(俩种解决方法)
  5. Xmy的Python----Numpy库
  6. 微信公众号开发—通过网页授权实现业务系统登录及用户绑定(微信网页授权自动登录业务系统)
  7. 保险产业拥抱“大数据时代” 或带来颠覆性变革
  8. 数据库实验——简单数据库应用系统设计与实现
  9. 什么是京东自营商品?京东自营是什么意思?京东自营?
  10. SpringSecurity多种认证方式记录之自定义