自定义标题

//头文件:

#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是最大的窗口 

//在主窗口的提升类就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值