GridFrame/common/include/titleBar.h

51 lines
1.1 KiB
C++

#ifndef TITLEBAR_H
#define TITLEBAR_H
/**
* 自定义标题栏
* */
#include <QDialog>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QPushButton>
#include <QWidget>
#include <QMouseEvent>
#include <QApplication>
class TitleBar : public QWidget
{
Q_OBJECT
public:
explicit TitleBar(QWidget *parent = nullptr,bool bClose = false,bool bMaxMin = false);
void setTitle(const QString &title);
void updateMaximizeButton(); // 根据窗口状态更新按钮文本
void setCenterText(const QString &text);
signals:
void maximizeClicked();
void closeClicked();
protected:
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mouseDoubleClickEvent(QMouseEvent *event) override;
private:
void setupUI();
private:
QPoint m_dragStartPosition;
QWidget *m_parentWindow;
QLabel *m_titleLabel;
QLabel *m_centerLabel = nullptr;
QPushButton *m_maximizeButton;
QPushButton *m_closeButton;
bool m_isMaximized = false;
bool _bShowClose = false;
bool _bShowMaxMin = false;
};
#endif