Qt 窗口随鼠标移动效果

这篇具有很好参考价值的文章主要介绍了Qt 窗口随鼠标移动效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现在窗口任意位置按下鼠标左键都可以移动窗口的效果,完整代码如下:
mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMouseEvent>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
protected:
    // 重写父类鼠标点击事件:鼠标按下的时候记录偏移量,方便鼠标移动时使用
    void mousePressEvent(QMouseEvent *event) override;
    // 重写父类鼠标移动事件
    void mouseMoveEvent(QMouseEvent *event) override;
private:
    Ui::MainWindow *ui;
    QPoint m_offset;// 窗口移动时,鼠标点击位置和窗口左上角的偏移量
};
#endif // MAINWINDOW_H

mainwindow.cpp:文章来源地址https://www.toymoban.com/news/detail-647028.html

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
// 重写父类鼠标点击事件:鼠标按下的时候记录偏移量,方便鼠标移动时使用
void MainWindow::mousePressEvent(QMouseEvent *event)
{
    // event->globalPos():鼠标点击位置和桌面左上角的距离
    // this->pos():窗口左上角位置和桌面左上角位置的距离
    m_offset = event->globalPos() - this->pos();
}
// 重写父类鼠标移动事件
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    // this->move():设置窗口左上角的位置
    // event->globalPos():鼠标点击位置和桌面左上角的距离
    this->move(event->globalPos() - m_offset);
}

到了这里,关于Qt 窗口随鼠标移动效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT中窗口自绘制效果展示

    项目中需要使用QT进行窗口自绘,前期先做一下技术探索,参考相关资料代码熟悉流程。本着代码是最好的老师原则,在此记录一下。 目录 1.运行效果 2.代码结构 3.具体代码 myspeed.pro drawdialog.h meter1.h meter2.h drawdialog.cpp meter1.cpp meter2.cpp main.cpp

    2024年02月07日
    浏览(43)
  • 【Qt】Qt无边框窗口(鼠标点击自定义标题栏)可拖动

    隐藏掉标题栏后,默认情况下窗口无法被鼠标拖动的,需要自己处理鼠标事件,移动窗口达到拖动效果,但是又不想要鼠标点击整个窗口都可以拖动,只需要鼠标点击自定义的标题栏时可拖动 具体步骤如下: 类外初始化 通过鼠标点击事件,判断鼠标是否在标题栏,如果是,

    2024年02月12日
    浏览(43)
  • Qt透明窗口鼠标穿透问题及解决办法

    最近写了个项目,需要播放视频并在视频上做标记框去完成一些功能 因为视频播放使用了 VLC-qt 的库,封装好的窗口控件 没办法直接在该视频窗口上绘图(也许可以?) 出于不想动别人写好的库的想法,想着在视频窗口上加一个透明蒙版-即一个透明窗口,在透明窗口上进行

    2024年02月04日
    浏览(42)
  • QT`实现鼠标超时未点击,窗口自动关闭

    QT 实现鼠标超时未点击,窗口自动关闭 前言 有的时候我们需要某些窗口实现超时自动关闭,但是Qt窗口一般是多部件堆叠而成,如果常规处理,对每一个部件进行鼠标点击事件处理显然不太合理,我个人参考了网上前辈的处理方法,通过直接重新实现 QApplication::notify 函数来

    2024年02月10日
    浏览(45)
  • Qt隐藏标题栏,鼠标实现窗口右下角放缩窗口

    重写鼠标移动事件就可以了,如果想实现其它位置的缩放,可以自己根据鼠标的位置来实现,思路都是一样的

    2024年02月13日
    浏览(51)
  • Qt 鼠标按下移动释放事件

    QEvent::MouseButtonPress ​ 鼠标按下时,触发该事件,它对应的子类是 QMouseEvent QEvent::MouseMove ​ 鼠标移动时,触发该事件,它对应的子类是 QMouseEvent QEvent::MouseButtonRelease ​ 鼠标释放时,触发该事件,它对应的子类是 QMouseEvent 自定义一个标签控件 LabelX ,让它继承自 QLabel ,然后

    2024年01月22日
    浏览(106)
  • Qt 之按钮鼠标 悬浮、按下、松开后的效果

    本文介绍了Qt中的按钮实现响应鼠标悬浮、按下、松开后的效果,在三种状态下,按钮改变不同的背景图片。 方式1:通过修改样式表的方式去实现; 方式2:通过继承QPushButton去实现一个自定义的按钮; 方式3:在主界面中给按钮安装事件过滤器的方式去实现 这里尽量不要有

    2024年02月10日
    浏览(43)
  • Qt模拟键盘单击、组合键、鼠标移动的多种实现方式

    Qt模拟键盘点击分为两种情况: 情况一:模拟键盘输入到系统窗口,整个系统都接收这个模拟输入。 情况二:模拟键盘输入到指定的软件,只有指定的软件接收模拟输入。 情况一实现方式: 头文件:windows.h 使用 void keybd_event(BYTE bVk, BYTE bScan, DWORD dwFlags,DWORD dwExtraInfo); 参数:

    2024年02月10日
    浏览(39)
  • 【Qt+FFmpeg】鼠标滚轮放大、缩小、移动——解码播放本地视频(三)

     上一期我们实现了播放、暂停、重播、倍速功能,这期来谈谈如何实现鼠标滚轮放大缩小和移动;如果还没看过上期,请移步 【Qt+FFmpeg】解码播放本地视频(一)_logani的博客-CSDN博客【Qt+FFmpeg】解码播放本地视频(二)——实现播放、暂停、重播、倍速功能_logani的博客-C

    2024年02月10日
    浏览(41)
  • Qt 鼠标移入QLabel、离开QLabel、点击QLabel显示不同的效果

    通过Qt建立一个窗口应用,经常会出现以下的应用场景:即鼠标移入、离开以及点击一个QLabel时,QLabel相应的样式发生改变,发生诸如“ 边框加粗 ”、“ 背景色改变 ”、“ 显示文本 ”等变化,本案例通过编写一个继承于QLabel的MyLabel类实现上述需求。通过重写enterEvent、le

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包