//头文件:
#include <QMouseEvent>
#include <QDialog>
class MyTitleWidget : public QWidget
{
Q_OBJECT
public:
MyTitleWidget(QWidget *parent = Q_NULLPTR);
~MyTitleWidget();
void SetParentWidget(QDialog *pDlg){ m_parent = pDlg; }
void mouseDoubleClickEvent(QMouseEvent *e);
public slots:
void Slot_TitleButtonClicked();
signals:
void singal_sizeChanged();
private:
Ui::MyTitleWidget ui;
bool maxNormal;
QDialog *m_parent;
};
//cpp文件
#include "MyTitleWidget.h"
MyTitleWidget::MyTitleWidget(QWidget *parent)
: QWidget(parent), maxNormal(false), m_parent(nullptr)
{
ui.setupUi(this);
connect(ui.minimizeButton, SIGNAL(clicked()), this, SLOT(Slot_TitleButtonClicked()));
connect(ui.maximizeButton, SIGNAL(clicked()), this, SLOT(Slot_TitleButtonClicked()));
connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(Slot_TitleButtonClicked()));
ui.maximizeButton->setProperty("maximizeProperty", "restore");
}
MyTitleWidget::~MyTitleWidget()
{
}
void MyTitleWidget::Slot_TitleButtonClicked()
{
if (!m_parent)
{
return;
}
if (this->sender() == ui.minimizeButton)
{
m_parent->showMinimized();
}
else if (this->sender() == ui.closeButton)
{
m_parent->close();
}
else if (this->sender() == ui.maximizeButton)
{
if (!maxNormal)
{
this->sender()->setProperty("maximizeProperty", "maximize");
m_parent->showMaximized();
}
else
{
this->sender()->setProperty("maximizeProperty", "restore");
m_parent->showNormal();
}
maxNormal = !maxNormal;
emit singal_sizeChanged();
}
}
void MyTitleWidget::mouseDoubleClickEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton)
{
if (maxNormal)
{
if (m_parent)
{
m_parent->showNormal();
}
maxNormal = !maxNormal;
}
else
{
if (m_parent)
{
m_parent->showMaximized();
}
maxNormal = !maxNormal;
}
}
}
//提示 m_parent是最大的窗口
//在主窗口的提升类就可以了