Qt无边框

最简单的可拖动对话框(大小不可改变)

#ifndef DIALOG_H
#define DIALOG_H/*** @file dialog.h* @author lpl* @brief 无边框dialog类* @date 2024/06/05*/
#include <QDialog>
#include <QMouseEvent>
namespace Ui {
class Dialog;
}
/*** @brief The Dialog class* 无边框dialog*/
class Dialog : public QDialog
{Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog();/*** @brief mousePressEvent   鼠标点击事件* @param ev 鼠标事件*/virtual void mousePressEvent(QMouseEvent *ev) override;/*** @brief mouseMoveEvent   鼠标移动事件* @param ev 鼠标事件*/virtual void mouseMoveEvent(QMouseEvent *ev) override;/*** @brief mouseReleaseEvent   鼠标释放事件* @param ev 鼠标事件*/virtual void mouseReleaseEvent(QMouseEvent *ev) override;
private:Ui::Dialog *ui;bool                    m_bIsPress;        ///< 是否点击鼠标QPoint                  m_pointMoveDis;    ///< 鼠标与电脑窗体左上角的相对位置
};#endif // DIALOG_H
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
#include <QMouseEvent>
Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);setWindowFlags(Qt::Window | Qt::FramelessWindowHint);
}Dialog::~Dialog()
{delete ui;
}void Dialog::mousePressEvent(QMouseEvent *ev)
{qDebug()<<ev->globalPos();//按下鼠标左键if(Qt::LeftButton == ev->button()){m_pointMoveDis = ev->globalPos();m_bIsPress = true;}QDialog::mousePressEvent(ev);
}void Dialog::mouseMoveEvent(QMouseEvent *ev)
{if (ev->buttons() & Qt::LeftButton){if(m_bIsPress){QPoint movePos = ev->globalPos();this->move(this->pos() + movePos - m_pointMoveDis);m_pointMoveDis = movePos;}}QDialog::mouseMoveEvent(ev);
}void Dialog::mouseReleaseEvent(QMouseEvent *ev)
{if(Qt::LeftButton == ev->button()){m_bIsPress = false;}QDialog::mouseReleaseEvent(ev);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/25311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java版知识付费saas租户平台:剖析现代知识付费平台的功能架构与运营逻辑

在数字化学习的时代背景下&#xff0c;知识付费平台已经成为教育行业的一颗璀璨明星&#xff0c;以其用户需求为中心&#xff0c;提供便捷高效的学习途径。这些平台汇聚了众多专业知识&#xff0c;覆盖职业技能、生活兴趣和人文社科等多个领域&#xff0c;满足不同用户的学习需…

RAG技术全解析:打造下一代智能问答系统

一、引言 点击可以查看最新资源 在人工智能的浪潮中&#xff0c;大型语言模型&#xff08;LLM&#xff09;凭借其强大的文本生成和理解能力&#xff0c;已经取得了显著的成果。然而&#xff0c;面对特定领域或知识密集型任务时&#xff0c;LLM仍然面临着诸多挑战&#xff0c;尤…

基于Python的AI动物识别技术研究

基于Python的AI动物识别技术研究 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 系统的登录模块设计 本次设计的AI动物识别系统为了保证用户的数据安全&#xff0c;设计了登录的模块&…

网络基础-IP协议

文章目录 前言一、IP报文二、IP报文分片重组IP分片IP分片示例MTUping 命令可以验证MTU大小Windows系统&#xff1a;Linux系统: 前言 基础不牢&#xff0c;地动山摇&#xff0c;本节我们详细介绍IP协议的内容。 一、IP报文 第一行&#xff1a; 4位版本号指定IP协议的版本&#…

C++使用thread_local实现每个线程下的单例

对于一个类&#xff0c;想要在每个线程种有且只有一个实例对象&#xff0c;且线程之间不共享该实例&#xff0c;可以按照单例模式的写法&#xff0c;同时使用C11提供的thread_local关键字实现。 在单例模式的基础上&#xff0c;使用thread_local关键字修饰单例的instance&…

NineData云原生智能数据管理平台新功能发布|2024年5月版

重点发布​ 数据库 DevOps - 表分组查询​ 在企业用户规模达到一定程度后&#xff0c;分库分表成为一种常见的数据库架构选择。在这种情况下&#xff0c;查询和维护数据需要高效的解决方案&#xff0c;以避免手动逐一查询、变更和汇总多个分库和分表的繁琐操作。 库分组变更…

【JAVA WEB实用技巧与优化方案】如何使用本地.bat/.sh脚本快速将服务发布到测试环境?

文章目录 普通方式的springboot 使用docker打包发布【手动构建镜像模式】1. maven 打包可运行jar包2.手动打包镜像3.运行容器全自动化本地命令发布到远程服务的方式配置ssh信任公钥获取公钥git 获取公钥方式: 桌面右键 -> open git gui here -> help -> show SSH key命…

C++模板知识点总结

C模板知识点总结 模板是C语言中非常强大的特性之一&#xff0c;它允许我们编写泛型代码&#xff0c;从而能够处理不同数据类型的通用算法和数据结构。C模板主要包括函数模板和类模板。以下是对C模板相关知识点的总结。 1. 什么是模板 模板是一种通用的代码结构&#xff0c;能…

LLM中完全消除矩阵乘法,效果惊人!10亿参数在FPGA上运行功耗接近大脑!!

一直以来&#xff0c;矩阵乘法&#xff08;MatMul&#xff09;在神经网络操作中占据主导地位&#xff0c;主要因为GPU针对MatMul进行了优化。 老黄一举揭秘三代GPU&#xff01;打破摩尔定律&#xff0c;打造AI帝国&#xff0c;量产Blackwell解决ChatGPT全球耗电难题 这种优化使…

【适配鸿蒙next】Flutter 新一代混合栈管理框架

前言 据最新消息显示&#xff0c;华为今年下半年将全面转向其自主平台HarmonyOS&#xff0c;放弃Android系统。 报道中提到&#xff0c;下一版HarmonyOS预计将随华为即将推出的Mate 70旗舰系列一起发布。 据悉&#xff0c;HarmonyOS Next 已经扩展到4000个应用程序&#xff0c;…

C++【STL】改造红黑树简单模拟实现set map(带你了解set map的底层实现结构)

目录 一、学前铺垫&#xff08;泛型编程&#xff09; 二、改造红黑树 1.红黑树节点的改造 2.insert的改造 3.迭代器的实现 4.完整改造代码 三、set的模拟实现封装 四、map的模拟实现封装 五、完结撒❀ 前言&#xff1a; 下面为了简单模拟实现set map所出现的代码是以…

Tensorflow入门实战 P03-天气识别

目录 1、完整代码 2、运行结果 2.1 查看20张图片 2.2 程序运行 2.3 运行结果 3、小结 ① 代码运行过程中有报错&#xff1a; ② 修改代码如下&#xff1a; ③ 分析原因&#xff1a; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&…

NDIS Filter开发-PNP响应和安装

NDIS filter驱动可能是最容易生成的驱动之一&#xff0c;如果你安装了VS 2015 WDK之后&#xff0c;你可以直接生成一个能运行的Filter驱动&#xff0c;它一般是ndislwf。 和大部分硬件不同&#xff0c;NDIS Filter驱动介于软件和硬件抽象层之上&#xff0c;它和硬件相关&…

SpringCloud Gateway中Route Predicate Factories详细说明

官网地址&#xff1a;https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories Spring Cloud Gateway将路由匹配作为Spring WebFlux HandlerMapping基础架构的一部分。 Spring Cloud Gateway …

使用 GPT-4 创作高考作文 2024年

使用 GPT-4 创作高考作文 2024年 使用 GPT-4 创作高考作文&#xff1a;技术博客指南 &#x1f914;✨摘要引言正文内容&#xff08;详细介绍&#xff09; &#x1f4da;&#x1f4a1;什么是 GPT-4&#xff1f;高考作文题目分析 ✍️&#x1f9d0;新课标I卷 人类智慧的进步&…

Linux网络安全

文章目录 一、网络安全概述二、常用服务端口三、 ping命令的使用3.1、ping命令的简单概述3.2、ping命令的使用 四、资源限制4.1、查看系统资源限制4.2、临时修改资源限制4.3、永久修改资源限制 五、网络安全服务工具介绍5.1、ClamAV5.2、Nmap5.3、Wireshark5.4、Netcat5.5、Sno…

【C51】C51单片机实现的 抽奖机 设计与编程指南

文章目录 前言&#xff1a;1. 实现效果2. 准备工作3. 编写代码总结&#xff1a; 前言&#xff1a; 在本文中&#xff0c;我们将介绍如何使用C51单片机来实现一个简单的抽奖机。这个项目不仅能够展示C51单片机的基本应用&#xff0c;还能让我们了解如何通过编程来控制硬件&…

9.3 Go 接口的多态性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Django 视图类

在Django框架中&#xff0c;视图类&#xff08;Class-based views&#xff0c;简称CBVs&#xff09;提供了一个面向对象的方式来定义视图。这种方式可以让你通过创建类来组织视图逻辑&#xff0c;而不是使用基于函数的视图&#xff08;Function-based views&#xff0c;简称FBV…

Python中的贪婪算法详解与应用

关于Python中的贪婪算法 在计算机科学和算法设计中&#xff0c;贪婪算法是一种构建近似解法的重要策略。贪婪算法的核心思想在于每一步都选择当前状态下最优的解&#xff0c;以期通过一系列局部最优解最终达到全局最优。尽管贪婪算法并不总是能够找到全局最优解&#xff0c;但…