// .h
/* 若窗口是从QDialog继承下来,设置窗口无标题需要加上Qt::Dialog项,否则即使设置了 Qt::FramelessWindowHint,窗口一样有标题,如下:
setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
*/
#pragma once
#include <QtWidgets/QWidget>
#include "ui_FaceDetectDemo.h"
class FaceDetectDemo : public QWidget
{
Q_OBJECT
public:
FaceDetectDemo(QWidget *parent = Q_NULLPTR);
~FaceDetectDemo();
void ShowWidget();
void CloseWidget();
private slots:
// 右键菜单
void RightMouseKeyClicked(const QPoint &point);
void ShowWindowMinimize(); // 窗口最小化
private:
void FindWidgetAllChildren();
protected:
void mousePressEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *);
void keyPressEvent(QKeyEvent *);
void closeEvent(QCloseEvent *);
void resizeEvent(QResizeEvent *);
private:
Ui::FaceDetectDemoClass ui;
// 移动窗口
QPoint m_point;
bool m_bPress;
// 保存最开始的大小和字体
struct AutoResize
{
QRect m_rect;
QFont m_font;
};
QRect m_rect;
QFont m_font;
QMap<QWidget*, AutoResize> m_wdgtMapSize; //保存所有窗口最开始大小和字体
};
//.cpp
#include <qlabel.h>
#include <qimage.h>
#include <qstring.h>
#include <qdatetime.h>
#include <QDesktopWidget>
#include <QMouseEvent>
#include <qmenu.h>
#include "FaceDetectDemo.h"
FaceDetectDemo::FaceDetectDemo(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
// 获取屏幕分辨率大小,