12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #ifndef __DIALOGBASE_H__
- #define __DIALOGBASE_H__
- #include <QDialog>
- 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__
|