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_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文件

#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. 事件, 大事        运动项目

相关推荐

  1. Qt 实现边框窗口1.0

    2024-02-11 18:46:01       47 阅读
  2. Qt边框窗口可拖动

    2024-02-11 18:46:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-11 18:46:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-11 18:46:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-11 18:46:01       82 阅读
  4. Python语言-面向对象

    2024-02-11 18:46:01       91 阅读

热门阅读

  1. 面试高频知识点:2线程 2.1.6线程之间如何通信

    2024-02-11 18:46:01       43 阅读
  2. 力扣94-二叉树的中序遍历

    2024-02-11 18:46:01       57 阅读
  3. 2.3 Binance_interface APP 现货行情-实时行情

    2024-02-11 18:46:01       51 阅读
  4. 1.1 Binance_interface安装与介绍

    2024-02-11 18:46:01       54 阅读
  5. 数据结构入门(2)时间复杂度与空间复杂度

    2024-02-11 18:46:01       49 阅读
  6. Leetcode 121 买卖股票的最佳时机

    2024-02-11 18:46:01       59 阅读
  7. 94 . 二叉树的中序遍历 -- 2024.2.10 LeetCode每日一题

    2024-02-11 18:46:01       58 阅读
  8. 完全背包总结二

    2024-02-11 18:46:01       45 阅读
  9. Elasticsearch中的模板:定义、作用与实践

    2024-02-11 18:46:01       56 阅读
  10. 计算机网络(第六版)复习提纲29

    2024-02-11 18:46:01       45 阅读
  11. 2023年股市总结,2024年A股方向展望!

    2024-02-11 18:46:01       50 阅读