DialogBase.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef __DIALOGBASE_H__
  2. #define __DIALOGBASE_H__
  3. #include <QDialog>
  4. class QMouseEvent;
  5. class QVBoxLayout;
  6. class QPushButton;
  7. class QWidget;
  8. class QLabel;
  9. class QPoint;
  10. /**
  11. * @brief 这个基础类主要为了实现弹窗通用的拖动和阴影效果
  12. *
  13. */
  14. class DialogBase : public QDialog
  15. {
  16. Q_OBJECT
  17. public:
  18. explicit DialogBase(QWidget *parent = nullptr);
  19. ~DialogBase();
  20. /* 设置标题 */
  21. void setTitle(const QString &title, QSize size = QSize(120, 18));
  22. /* 获取标题 */
  23. QString getTitle() const;
  24. protected:
  25. /* 初始化UI */
  26. virtual void initUI();
  27. /* 设置top栏的位置布局 */
  28. void layoutTop();
  29. protected:
  30. /* 重写鼠标按下事件 */
  31. void mousePressEvent(QMouseEvent *event) override;
  32. /* 重写鼠标移动事件 */
  33. void mouseMoveEvent(QMouseEvent *event) override;
  34. /* 重写鼠标释放事件 */
  35. void mouseReleaseEvent(QMouseEvent *event) override;
  36. /* 重新设置大小 */
  37. protected:
  38. QPoint m_lastPos; /* 鼠标点击的位置 */
  39. QWidget* m_widgetBackground = nullptr; /* 背景容器,这个才是真正容纳所有内容的容器 */
  40. QWidget* m_widgetTop = nullptr; /* 顶部标题栏 */
  41. QWidget* m_widgetContent = nullptr; /* 内容区域 */
  42. QWidget* m_widgetBottom = nullptr; /* 底部按钮区域 */
  43. QVBoxLayout* m_layoutBackground = nullptr; /* 背景容器的布局 */
  44. QLabel* m_labelTitle = nullptr; /* 标题标签 */
  45. QPushButton* m_pBtn_Close = nullptr; /* 关闭按钮 */
  46. QPushButton* m_pBtn_OK = nullptr; /* 确认按钮 */
  47. QPushButton* m_pBtn_Cancel = nullptr; /* 取消按钮 */
  48. };
  49. #endif // __DIALOGBASE_H__