当前位置: 首页 > news >正文

Qt 实现无边框窗口1.0

目录

项目需求:

        1、没有边框;

        2、点击windows系统的状态栏的程序运行图标可实现最大最小化;

        3、可以移动窗口;

项目实现:

        1、实现 无边框

        2、实现 点击windows系统的状态栏的程序运行图标可实现最大最小化

         3、实现 窗口移动

代码具体实现——基于Qt5.12.0:

.h文件

.cpp文件

英语单词:


项目需求:

        1、没有边框;

        2、点击windows系统的状态栏的程序运行图标可实现最大最小化;

        3、可以移动窗口;

项目实现:

        1、实现 无边框

        2、实现 点击windows系统的状态栏的程序运行图标可实现最大最小化

       

setWindowFlags(Qt::FramelessWindowHint | Qt:: WindowMinMaxButtonHint);

         3、实现 窗口移动

  ******  Qt 中一些位置的知识 *****

a、窗口位置

        this->pos() // 窗口左上角相对桌面左上角

b、鼠标位置

        event->pos() //鼠标相对于应用程层序的位置

        event->gloabalPos() //鼠标相对于桌面原点的位置,绝对位置

c、移动位置

        void move(const QPoint &); // 移动

************************************

*****代码实现*****

需要重写两个“鼠标事件函数”

要带头文件 #include <QMouseEvent>
 

//定义
void mousePressEvent(QMouse *event) override;void mouseMoveEvent(QMouse *event) override;//实现
void Widget::mousePressEvent(QMouseEvent *event){//获取的是鼠标点击窗口时的位置mouse_pos = event->globalPos();    //鼠标的绝对位置win_pos = this->pos();             //窗口的绝对位置diff_pos = mouse_pos - win_pos;    //鼠标 和 窗口 之间的相对位置
}void Widget::mouseMoveEvent(QMouseEvent *event){//获取的是鼠标拖动是的位置QPoint pos = event->globalPos();this->move(pos - diff_pos);    //这样处理可以使窗口丝滑的拖动
}

代码具体实现——基于Qt5.12.0:

.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();
private:void mousePressEvent(QMouseEvent * event) override;void mouseMoveEvent(QMouseEvent * event) override;
private:QPoint  mouse_pos;QPoint  win_pos;QPoint  diff_pos;
};#endif // WIDGET_H

.cpp文件

#include "widget.h"
#include <QMouseEvent>Widget::Widget(QWidget *parent): QWidget(parent)
{this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinMaxButtonsHint);
}Widget::~Widget()
{}void Widget::mousePressEvent(QMouseEvent *event){//获取的是鼠标点击窗口时的位置mouse_pos = event->globalPos();    //鼠标的绝对位置win_pos = this->pos();             //窗口的绝对位置diff_pos = mouse_pos - win_pos;    //鼠标 和 窗口 之间的相对位置
}void Widget::mouseMoveEvent(QMouseEvent *event){//获取的是鼠标拖动是的位置QPoint pos = event->globalPos();this->move(pos - diff_pos);    //这样处理可以使窗口丝滑的拖动
}

英语单词:

单词翻译
framen. 框架;结构;画面
flagn. 旗帜,国旗;(体育运动的)信号旗,标志旗;
globaladj. 全球的, 全世界的         整体的, 总括的, 全面的
mousen. 鼠标;老鼠;胆小羞怯的人
eventn. 事件, 大事        运动项目
http://www.lryc.cn/news/301064.html

相关文章:

  • Flume(二)【Flume 进阶使用】
  • 静态时序分析:SDC约束命令set_clock_transition详解
  • web 发展阶段 -- 详解
  • 车载软件架构 —— Adaptive AUTOSAR软件架构中操作系统
  • 前缀和算法-截断数组
  • Kubernetes实战:Kubernetes中网络插件calico Daemon Sets显示异常红色
  • 深入探究:JSONCPP库的使用与原理解析
  • 字节UC伯克利新研究 | Magic-Me:简单有效的主题ID可控视频生成框架
  • 2024免费人像摄影后期处理工具Portraiture4.1
  • Spring Boot 笔记 010 创建接口_更新用户头像
  • 认识并使用HttpLoggingInterceptor
  • 内存块与内存池
  • 【FPGA开发】HDMI通信协议解析及FPGA实现
  • [NSSRound#16 Basic]Web
  • [职场] 会计学专业学什么 #其他#知识分享#职场发展
  • docker (五)-docker存储-数据持久化
  • 飞行路线(分层图+dijstra+堆优化)(加上题目选数复习)
  • 云计算基础-快照与克隆
  • 使用 RAG 创建 LLM 应用程序
  • 第13章 网络 Page744~746 asio核心类 ip::tcp::endPoint
  • 面试浏览器框架八股文十问十答第一期
  • 多线程的基本原理学习
  • C/C++进制转换
  • 使用 Coze 搭建 TiDB 助手
  • Arduino程序简单入门
  • QT+OSG/osgEarth编译之八十三:osgdb_ogr+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_ogr)
  • 开年炸裂-Sora/Gemini
  • vue前端系统启动报错Module not found: Error: Can‘t resolve ‘sass-loader‘
  • HTML | DOM | 网页前端 | 常见HTML标签总结
  • 乡政府|乡政府管理系统|基于Springboot的乡政府管理系统设计与实现(源码+数据库+文档)