#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. vue v-model 表单控件绑定

    v-model 指令在表单控件元素上创建双向数据绑定,下面一一进行示例解释. 1.v-model 双向绑定文本 <!DOCTYPE html> <html> <head ...

  2. UOJ #56. 【WC2014】非确定机

    题意大意:给出一个输出文件,求输入. 1.满足所求的输入文件是一张图,n个点,m条边,所用算法是k(k在给出的输出文件中给出了) 2.算法是图论算法?!k基本上→两位数组成,若十位数相同,说明基本算法 ...

  3. 【转】VC6在Win7下打开文件崩溃问题

    http://www.cnblogs.com/Leon5/archive/2011/08/24/2152670.html 1.微软针对这个问题发布了一个补丁包.下载地址 2.下载之后是一个源码包,解压 ...

  4. Codeforces 535C - Tavas and Karafs

    535C - Tavas and Karafs 思路:对于满足条件的r,max(hl ,hl+1 ,hl+2 ,......,hr )<=t(也就是hr<=t)且∑hi<=t*m.所 ...

  5. Python - openpyxl 读写操作Excel

    openpyxl特点   openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容易 注意:如果文字编码是“gb2312” 读取后就会显 ...

  6. English trip -- Review Unit3 Family 家人

    Words daughter grandfather grandmother husband wife uncle aunt brother sister Who is ...? Loki's ... ...

  7. (GoRails) 用app/decorators来取代app/helpers; delegate()方法

    视频:https://gorails.com/episodes/decorators-from-scratch?autoplay=1 装饰设置风格:把Model层变的干净,但不使用app/helper ...

  8. codeforces 576a//Vasya and Petya's Game// Codeforces Round #319 (Div. 1)

    题意:猜数游戏变种.先选好猜的数,对方会告诉你他想的那个数(1-n)能不能整除你猜的数,问最少猜几个数能保证知道对方想的数是多少? 对一个质数p,如果p^x不猜,那么就无法区分p^(x-1)和p^x, ...

  9. Windows Server2008安装mysql5.6出现程序无法正常启动(0xc000007b)

    下载 到官网下载mysql5.6版本,msi安装包只有32位无64位 移动到指定文件夹下,解压文件 添加环境变量 变量名:MYSQL_HOME 变量值:C:\Program Files\mysql 即 ...

  10. 『PyTorch』第十二弹_nn.Module和nn.functional

    大部分nn中的层class都有nn.function对应,其区别是: nn.Module实现的layer是由class Layer(nn.Module)定义的特殊类,会自动提取可学习参数nn.Para ...