目录
2、点击windows系统的状态栏的程序运行图标可实现最大最小化;
[1、实现 无边框](#1、实现 无边框)
[2、实现 点击windows系统的状态栏的程序运行图标可实现最大最小化](#2、实现 点击windows系统的状态栏的程序运行图标可实现最大最小化)
[3、实现 窗口移动](#3、实现 窗口移动)
项目需求:
1、没有边框;
2、点击windows系统的状态栏的程序运行图标可实现最大最小化;
3、可以移动窗口;
项目实现:
1、实现 无边框
2、实现 点击windows系统的状态栏的程序运行图标可实现最大最小化
cppsetWindowFlags(Qt::FramelessWindowHint | Qt:: WindowMinMaxButtonHint);
3、实现 窗口移动
****** Qt 中一些位置的知识 *****
a、窗口位置
this->pos() // 窗口左上角相对桌面左上角
b、鼠标位置
event->pos() //鼠标相对于应用程层序的位置
event->gloabalPos() //鼠标相对于桌面原点的位置,绝对位置
c、移动位置
void move(const QPoint &); // 移动
************************************
*****代码实现*****
需要重写两个"鼠标事件函数"
要带头文件 #include <QMouseEvent>
cpp//定义 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文件
cpp
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class Widget : public QWidget
{
Q_OBJECT
public:
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文件
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); //这样处理可以使窗口丝滑的拖动
}
英语单词:
|------------|----------------------------------|
| 单词 | 翻译 |
| frame | n. 框架;结构;画面 |
| flag | n. 旗帜,国旗;(体育运动的)信号旗,标志旗; |
| global | adj. 全球的, 全世界的 整体的, 总括的, 全面的 |
| mouse | n. 鼠标;老鼠;胆小羞怯的人 |
| event | n. 事件, 大事 运动项目 |