Qt键盘事件和鼠标事件的简单案例实现

导读:本篇文章讲解 Qt键盘事件和鼠标事件的简单案例实现,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

事件:事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的统称。Qt中使用一个对象来表示一个事件,继承自QEvent类。
注意:事件与信号并不相同,事件与信号是两个不同层面的东西,发出者不同,作用也不同。

案例要实现的功能:

  1. 通过设置键盘的快捷键来切换另一个窗口
  2. 通过鼠标左键点击界面来改变窗口的大小(每点击一次窗口就会在变大和变小之间切换)。

案例实现的步骤:

1、功能1的实现

  1. 新建一个QWidget,然后再添加一个mainwindow类。
    在Main.cpp源文件中,将初次显示的界面更改为后来添加的Mainwindow:
    在这里插入图片描述
#include "mainwindow.h"
QApplication a(argc, argv);
MainWindow w;
  1. 在mainwindow.h头文件中先对键盘事件函数声明:
    在这里插入图片描述
#include "QKeyEvent"//添加键盘事件类
protected:      //键盘事件函数声明
    void keyPressEvent(QKeyEvent *event);
  1. 然后在mainwindow.cpp源文件中,重写之前在mainwindow.h头文件中的函数,设置键盘的事件,就是按下ctrl+N使得widget界面显示:
    在这里插入图片描述
#include "widget.h"
void MainWindow::keyPressEvent(QKeyEvent *event){
    if(event->modifiers()==Qt::ControlModifier){
        if(event->key()==Qt::Key_N){
            Widget *w1=new Widget(this);//新建一个对象
            w1->show();
        }
    }
}
  1. 到这里利用键盘的快捷键来切换另一个窗口的事件就完成了,运行一下:
    初始界面如下:
    在这里插入图片描述
  2. 按下ctrl+N 组合键,界面发生了变化:
    在这里插入图片描述
    由于widget界面放到了mainwidow中了,没有单独产生一个界面,所以widget界面显示在了mainwidow界面中了,就像俄罗斯套娃一样套起来了。

2、功能2的实现

  1. 接下来实现另一个功能:
    在mainwindow.h头文件中进行鼠标事件函数声明:
    在这里插入图片描述
#include "QMouseEvent"//添加鼠标事件类
protected:     //鼠标事件函数声明
    void mousePressEvent(QMouseEvent *event);
  1. 然后在mainwindow.cpp 头文件中对上面的函数进行重构:
    在这里插入图片描述
void MainWindow::mousePressEvent(QMouseEvent *event){
    if(event->button()==Qt::LeftButton){//事件判断
        if(windowState()!=Qt::WindowFullScreen)
            setWindowState(Qt::WindowFullScreen);
        else
            setWindowState(Qt::WindowNoState);
    }
}
  1. 运行一下:
    运行初始界面:
    在这里插入图片描述
  2. 在界面中点击鼠标左键:
    在这里插入图片描述
    发现界面被最大化了,再次点击鼠标左键发现又恢复原来的大小了。

🎆🎈到此结束的啦🎈🎆

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74939.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!