#include "mainwindow.h"

#include <QDebug>
#include <QKeyEvent>
#include <QMouseEvent>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    this->setupUi(this);
    QWidget::installEventFilter(this);
}

MainWindow::~MainWindow()
{

}

//通过过滤器组合Control + Enter 按键
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
    if(event->type()==event->KeyPress)
    {
        QKeyEvent *keyEvent = (QKeyEvent *)event;
        if(keyEvent->key() == Qt::Key_Return && (keyEvent->modifiers() & Qt::ControlModifier))
        {
            qDebug()<<"EnterKey + ControlKey";
            return true;
        }
    }
    return false;
}

//按键与鼠标的结合 键盘按住Ctrl键 + 鼠标左键的实现
void MainWindow::mousePressEvent(QMouseEvent *event)
{
    // 获取鼠标在点击窗体上的坐标
    QPoint pos = event->pos();
    qDebug()<<pos;
    if(QApplication::keyboardModifiers() == Qt::ShiftModifier)
    {
        if(event->button() == Qt::LeftButton)
        {
            qDebug()<<"ShiftKey + MOuseLeftButton";
            return;
        }
    }

    if(QApplication::keyboardModifiers() == Qt::ControlModifier)
    {
        if(event->button() == Qt::RightButton)
        {
            qDebug()<<"ShiftKey + MOuseRightButton";
            return;
        }
    }
}

//三键组合Shift + Ctrl + A的实现
void MainWindow::keyPressEvent(QKeyEvent *event)
{
    if (event->modifiers() == (Qt::ShiftModifier | Qt::ControlModifier) && event->key() == Qt::Key_A)
    {
        qDebug()<<"ShiftKey + controlKey + A";
        return;
    }

//    if (event->modifiers() == (Qt::ShiftModifier | Qt::ControlModifier))
//    {
//        qDebug()<<"ShiftKey + controlKey";
//        return;
//    }
}

												

Qt 获取组合键 键盘按住某键 鼠标组合实现的更多相关文章

  1. Qt获取组合键

    CTRL+Enter发送信息的实现 在现在的即时聊天程序中,一般都设置有快捷键来实现一些常用的功能,类似QQ可以用CTRL+Enter来实现信息的发送. 在QT4中,所有的事件都继承与QEvent这个 ...

  2. Hotkeys.js 2.0.2 发布,捕获键盘输入和输入的组合键快捷键,它没有依赖

    这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb),gzip:1.9k. 更新内容: 添加测试用例: 添加更多特殊键支持: 修复bug. __ ...

  3. Hotkeys.js 2.0.2 发布,JS 网页快捷键设置,捕获键盘输入和输入的组合键快捷键,它没有依赖

    这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb),gzip:1.9k. 更新内容: 添加测试用例: 添加更多特殊键支持: 修复bug. __ ...

  4. jQuery如何使用键盘事件,按住空格键完成进度条效果,并终止键盘事件

    jQuery使用键盘事件 keyup:键盘抬起时 keydown:键盘按下时 keypress:键盘按住时 运行下列代码,可以看效果 $(document).keyup(function () { c ...

  5. jQuery键盘控制方法,以及键值(keycode)对照表

    键盘控制应用范围非常广泛,比如快捷键控制页面的滚动:在填写表单时候,限制输入内容:或者是屏蔽复制.粘贴.退后等功能.这里说说用jQuery比原生态的JS好用,代码简单清晰,不要问我JS怎么写,因为我不 ...

  6. wpf Listbox 实现按住ctrl键来取消选中

    1. 首先继承一个listbox,来获得按住ctrl键时,点击的item public class ListBoxEx : ListBox { public BeatTemplateWave GetA ...

  7. 键盘没有Home键和End键的完美解决办法

    最近新入手一个笔记本,发现键盘没有Home/End,这两个键虽然不是必用,但也是用顺手了,特别是选择一行,到行首,行尾的时候甚是方便 作为一枚程序员,怎么能够妥协? 于是开始研究 方案一 通过观察笔记 ...

  8. Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式

    actionNone : 回车键,按下后光标到下一行actionGo : Go,actionSearch : 放大镜actionSend : SendactionNext : NextactionDo ...

  9. 键盘上各键对应的ASCII码与扫描码

    键盘上各键对应的ASCII码与扫描码 vbKeyLButton 0x1 鼠标左键vbKeyRButton 0x2 鼠标右键vbKeyCancel 0x3 CANCEL 键vbKeyMButton 0x ...

随机推荐

  1. Linux——GRUB简单学习笔记

    GRUB的配置文件默认为  :/boot/grub/grub.conf # ls -l /etc/grub.conf GRUB配置选项: default定义缺省启动系统 timeout定义缺省等待时间 ...

  2. spoj MINSUB 单调栈+二分

    题目链接:点击传送 MINSUB - Largest Submatrix no tags  You are given an matrix M (consisting of nonnegative i ...

  3. WPF基础学习笔记整理 (七) Binding绑定

    基础知识: 数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性:目标对象始终是依赖属性,而源对象则可以是任何内容. BindingOperations类,提供静态 ...

  4. bash 判断两个文件相等的代码

    #!/bin/bash #定义参数 username="xxx" passwd="xxxxxxxx" dbname="xxx" #判断入参为 ...

  5. JS + flash 复制

    js代码ZeroClipboard组件制作复制剪切板复制粘贴文字内容,一键即可复制粘贴文字内容.兼容各大主流浏览器firefox,,Chrome,IE等. 演示代码 如下: <script ty ...

  6. [原][库][c++]tinyxml使用小结

    参考:http://blog.csdn.net/L_Andy/article/details/40615517 tinyxml官网: http://www.grinninglizard.com/tin ...

  7. VS 2013 无法启动IIS Express Web 服务器

    之前程序好好的没什么问题,可是今天一大早来到公司后打开VS2013运行Web程序,然后就弹出提示信息:无法启动IIS Express Web 服务器,思来想去昨天都好好的,今天怎么会出现如此问题呢? ...

  8. Confluence 6 使用 LDAP 授权连接一个内部目录 - Schema 设置

    基本 DN(Base DN) 根专有名称(DN),这个名称在你对目录服务器上进行查询的时候使用.例如: o=example,c=com cn=users,dc=ad,dc=example,dc=com ...

  9. laravel 异常深度解析

    一.前言 做一件事,不仅要知其然,更要知其所以然.大部分的人都生活在别人设计的世界里,不是没有能力去更深一层,更进一步,而是因为自己懒得去思考.也许自己现在要做的就是:不要让自己舒服吧. 二.正题 1 ...

  10. 浅谈Linux

    Linux系统最初由芬兰赫尔辛基大学的Andrew S.Tanenbaum写的MINIX操作系统演变而来,这是一个小型操作系统,主要用于教学,1991年1月,Tanenbaum的学生Linus Tor ...