栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QT--通过鼠标移动窗口

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QT--通过鼠标移动窗口

本文为学习记录,若有错误,请联系作者,谦虚受教。

文章目录
  • 前言
  • 一、目的
  • 二、相关代码
    • 1..h代码
    • 2..cpp代码
  • 总结


前言

答案从来都是自己去寻找的,而不是别人告诉你的。


一、目的

在QT实现应用程序的时候,一般会将默认的标题栏去掉,然后自定义一个标题栏,此时就需要使用到鼠标事件来定义。
实现逻辑的关键点是找到对应的坐标点。

二、相关代码

在QT中,鼠标事件被封装成QMouseEvent对象,其中包含很多参数,来描述鼠标事件。
鼠标移动事件void mouseMoveEvent(QMouseEvent *event);
鼠标按下事件void mousePressEvent(QMouseEvent *event);
鼠标释放事件void mouseReleaseEvent(QMouseEvent *event);
鼠标双击事件void mouseDoubleClickEvent(QMouseEvent *event);


以下代码是实现窗口岁鼠标移动。 1…h代码
protected:
    void mouseMoveEvent(QMouseEvent *e);
    void mousePressEvent(QMouseEvent *e);
    void mouseReleaseEvent(QMouseEvent *);
private:
    QPoint m_mousePoint;
    QPoint movePoint;
    bool mousePress;
2…cpp代码

需要添加头文件
#include< QMouseEvent >

//重写鼠标事件,实现除去标题栏后任然能实现窗口移动
void MainWindow::mousePressEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)
    {
        mousePress = true;
    }
    //窗口移动距离
    movePoint = event->globalPos() - pos();
}

void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
    Q_UNUSED(event)
    mousePress = false;
}

void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    if(mousePress)
    {
        QPoint movePos = event->globalPos();//窗口初始位置
        move(movePos - movePoint);
    }
}

到此,窗口就可以随着鼠标的按下即可移动。

总结

善于总结,多进一步。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511275.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号