Qt [GC9-8]:让我们的程序可以随意的移动(重载鼠标事件)

简介: Qt [GC9-8]:让我们的程序可以随意的移动(重载鼠标事件)

image.png

基于Qt的汽车仪表模拟


由于我把窗口自带的标题栏给隐藏,所以现在的窗口无法移动,这就需要我自己来实现这个功能。大致流程就是当鼠标按下的时候,记录下程序的当前坐标,当鼠标移动时,将最新的鼠标坐标与原始记录坐标相减,得到x轴和y轴的移动向量。完了将窗口进行移动,当鼠标松开是,同理,将最后的鼠标坐标与记录值相减,得到位移向量。完成窗口移动。代码如下


这里用到的鼠标事件,需要包含鼠标事件的头文件image.png

完成后就可以在这三个事件中将我们的想法实现了,代码如下

/*
 * 鼠标按下事件
 */
void ControlPanel::mousePressEvent(QMouseEvent *event)
{
    if(event->y()<TITLE_HEIGHT)
    {
        point = event->globalPos();
    }
}
/*
 * 鼠标移动事件
 */
void ControlPanel::mouseMoveEvent(QMouseEvent *event)
{
    if(event->y()<TITLE_HEIGHT)
    {
        int dx = event->globalX() - point.x();
        int dy = event->globalY() - point.y();
        point = event->globalPos();
        this->move(this->x()+dx,this->y()+dy);
    }
}
/*
 * 鼠标松开事件
 */
void ControlPanel::mouseReleaseEvent(QMouseEvent *event)
{
    if(event->y()<TITLE_HEIGHT)
    {
        int dx = event->globalX() - point.x();
        int dy = event->globalY() - point.y();
        this->move(this->x()+dx,this->y()+dy);
    }
}

以上,我们就可以移动我的窗口了。

image.png

目录
相关文章
|
1月前
|
编译器
(9)Qt中信号与槽重载的解决方案
本文介绍了在Qt中处理信号与槽重载问题的三种解决方案:使用函数指针、Qt提供的QOverload类和Qt4的宏方式。
109 3
|
6月前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
446 0
|
6月前
【QT】读写.ini配置文件的程序实现
【QT】读写.ini配置文件的程序实现
109 0
|
6月前
|
存储 搜索推荐 人机交互
Qt鼠标事件全面解析:从基础到实战
Qt鼠标事件全面解析:从基础到实战
1196 0
|
4月前
|
Linux iOS开发 开发者
Qt问题(二):无法定位程序输入点于动态链接库
动态链接库(Dynamic Link Library,简称DLL)是一种可执行文件格式,常见于Windows操作系统中,而在Linux和macOS等其他操作系统中,相似的概念通常被称为共享库(Shared Library)。动态链接库允许程序在运行时加载所需的代码和数据,而不是在编译时静态链接到应用程序中。这种方式带来了几个重要的优点:
461 3
|
2月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
6月前
|
开发框架 自然语言处理 Linux
Qt:构建强大跨平台应用程序的框架
Qt:构建强大跨平台应用程序的框架
|
4月前
|
调度
【浅入浅出】Qt多线程机制解析:提升程序响应性与并发处理能力
在学习QT线程的时候我们首先要知道的是QT的主线程,也叫GUI线程,意如其名,也就是我们程序的最主要的一个线程,主要负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上书写逻辑时碰到了需要一直等待的事件该怎么办?它的加载必定会带着主界面的卡顿,这时候我们就要去使用多线程。
157 6
|
5月前
Qt鼠标事件
Qt鼠标事件