码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Qt的事件


    一、鼠标按下事件

    //鼠标按下事件,获取屏幕位置,并显示,移动显示框
    void Widget::mousePressEvent(QMouseEvent *event)
    {
        if(event->button() != Qt::LeftButton){
            return ;
        }
        QPoint point    = event->pos();
        QPointF winPt   = event->screenPos();
        QPointF gloalPt = event->globalPos();//相对屏幕的绝对位置
    
        QString str = QString::asprintf("point = (%d,%d)",point.x(),point.y());
        str        += QString::asprintf("\nwinPt = (%.0f,%.0f)",winPt.x(),winPt.y());
        str        += QString::asprintf("\ngloalPt = (%.0f,%.0f)",gloalPt.x(),gloalPt.y());
    
        ui->label->move(event->pos());
        ui->label->setText(str);
        QWidget::mousePressEvent(event);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    二、鼠标移动事件

    //鼠标移动实时获取鼠标位置,并显示
    void Widget::mouseMoveEvent(QMouseEvent *event)
    {
       QString str;
      QPoint point    = event->pos();
       //str = QString("%1 , %2").arg(QCursor().pos().x()).arg(QCursor().pos().y());//获取鼠标相对整个屏幕的位置
     str = QString::asprintf("(%d,%d)",point.x(),point.y());//获取相对屏幕的位置
    //   ui->label->move(event->pos());
       ui->label_2->setText(str);//实时显示在框内
    
       QWidget::mouseMoveEvent(event);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    三、键盘按下事件

    //点击键盘按钮A或者左键,左移;点击按钮右键或者D键,右移;以此类推
    void Widget::keyPressEvent(QKeyEvent *event)
    {
        QPoint poit = ui->pushButton->pos();//获取按钮坐标位置
    
        if((event->key() == Qt:: Key_A) || (event->key() == Qt::Key_Left)){
            ui->pushButton->move(poit.x() -30, poit.y());
        }else if((event->key() == Qt::Key_W) || (event->key() == Qt::Key_Up)){
            ui->pushButton->move(poit.x(), poit.y() -30);
        }else if((event->key() == Qt::Key_S) || event->key() == Qt::Key_Down){
            ui->pushButton->move(poit.x(), poit.y() + 30);
        }else if((event->key() == Qt::Key_D) || event->key() == Qt::Key_Right){
            ui->pushButton->move(poit.x() + 30,poit.y());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    四、绘制背景图片

    //绘制一张背景图片
    void Widget::paintEvent (QPaintEvent *event){
        Q_UNUSED(event);
    
        QPainter pait(this);
        pait.drawPixmap(0,0,this->width(),this->height(),QPixmap(":/image/bj.png"));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    五、注意

    在构造函数中加入以下代码,才可以实现相应事件。

    this->setMouseTracking(true);//开启鼠标跟踪

    grabKeyboard();//获取所有按键

    通过以下操作,可以查看Widget类中的虚函数事件。
    第一步右键点击类,第二步点击Refactor,第三步点击Insert Virty=ual Function of Base Classes,就可以弹出虚函数事件。
    在这里插入图片描述
    选中相关需要的虚函数事件,将2个Add相关的复选框选中,点击ok即可添加。
    在这里插入图片描述

  • 相关阅读:
    java毕业设计滴答拍摄影项目(附源码、数据库)
    和xshell和crt说再见,认识了一款51k star多端跨平台终端神器,强大酷炫
    MindSponge分子动力学模拟——软件架构(2023.08)
    什么是机器学习特征工程?【数据集特征抽取(字典,文本TF-Idf)、特征预处理(标准化,归一化)、特征降维(低方差,相关系数,PCA)】
    原装芯片现货,价格优惠,实单可谈
    LeetCode 盛最多水的容器 双指针
    分布式与一致性协议之CAP(四)
    【Hack The Box】windows练习-- Bankrobber
    (十三)STM32——串口通信(UART)
    ANR及卡顿体验优化
  • 原文地址:https://blog.csdn.net/weixin_44585751/article/details/134244481
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号