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月前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
113 0
|
1月前
【QT】读写.ini配置文件的程序实现
【QT】读写.ini配置文件的程序实现
|
1月前
|
存储 搜索推荐 人机交互
Qt鼠标事件全面解析:从基础到实战
Qt鼠标事件全面解析:从基础到实战
244 0
|
1月前
|
开发框架 自然语言处理 Linux
Qt:构建强大跨平台应用程序的框架
Qt:构建强大跨平台应用程序的框架
|
12天前
Qt MainWindow 程序主窗口
Qt MainWindow 程序主窗口
|
1月前
|
C++
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
QT第一个程序命名空间详解,解释ui_widget的和xxx.cpp的联系
50 0
|
1月前
|
编译器
QT creator开发环境下 界面更改后运行程序不能实时更新或者在源文件添加该控件后无法编译的问题
在使用QT Creator开发界面的过程中,偶尔会出现添加控件后,运行程序后,界面控件无法更新的情况,或者在源文件使用该控件却出现无法编译的情况,使用QT Creator 4.8.2也会出现这个情况,也不知道这种情况会不会在以后有所改善。
88 0
|
1月前
|
人工智能 编译器 C++
新版Qt6快速打包程序脚本
不知道啥时候Qt更新了,目前是6.7.0,项目默认的生成路径改了, 从 项目目录的同级目录 改为了 项目目录中的build目录, 之前的脚本也用不了了,所以用AI更新了一下脚本, 希望能帮到大家,方便快速打包程序到桌面。
58 9
|
1月前
|
开发框架 Linux C++
Qt:强大的跨平台C++应用程序开发框架
Qt:强大的跨平台C++应用程序开发框架
67 3
|
1月前
|
开发框架 编译器 C++
Qt:一个强大的跨平台C++应用程序开发框架
Qt:一个强大的跨平台C++应用程序开发框架
57 1

推荐镜像

更多