#ifndef __DIALOGBASE_H__ #define __DIALOGBASE_H__ #include class QMouseEvent; class QVBoxLayout; class QPushButton; class QWidget; class QLabel; class QPoint; /** * @brief 这个基础类主要为了实现弹窗通用的拖动和阴影效果 * */ class DialogBase : public QDialog { Q_OBJECT public: explicit DialogBase(QWidget *parent = nullptr); ~DialogBase(); /* 设置标题 */ void setTitle(const QString &title, QSize size = QSize(120, 18)); /* 获取标题 */ QString getTitle() const; protected: /* 初始化UI */ virtual void initUI(); /* 设置top栏的位置布局 */ void layoutTop(); protected: /* 重写鼠标按下事件 */ void mousePressEvent(QMouseEvent *event) override; /* 重写鼠标移动事件 */ void mouseMoveEvent(QMouseEvent *event) override; /* 重写鼠标释放事件 */ void mouseReleaseEvent(QMouseEvent *event) override; /* 重新设置大小 */ protected: QPoint m_lastPos; /* 鼠标点击的位置 */ QWidget* m_widgetBackground = nullptr; /* 背景容器,这个才是真正容纳所有内容的容器 */ QWidget* m_widgetTop = nullptr; /* 顶部标题栏 */ QWidget* m_widgetContent = nullptr; /* 内容区域 */ QWidget* m_widgetBottom = nullptr; /* 底部按钮区域 */ QVBoxLayout* m_layoutBackground = nullptr; /* 背景容器的布局 */ QLabel* m_labelTitle = nullptr; /* 标题标签 */ QPushButton* m_pBtn_Close = nullptr; /* 关闭按钮 */ QPushButton* m_pBtn_OK = nullptr; /* 确认按钮 */ QPushButton* m_pBtn_Cancel = nullptr; /* 取消按钮 */ }; #endif // __DIALOGBASE_H__