Qt自定义通用标题栏TitleBar类
功能
- 自定义 Qt 通用标题栏,包含图标、标题、最小化、最大化、关闭;
- 支持设置最小化、最大化是否显示和是否可用;
- 支持拖动窗口;
- 图标、最小化、最大化、关闭控件的样式,支持通过应用程序的QSS文件设置,也可以通过修改TitleBar类的构造函数实现。
效果
实现
- 自定义TitleBar类继承自QWidget
- TitleBar类构造函数
TitleBar(QString title, QWidget* parent);
说明:title 用来设置标题 - TitleBar类声明signals
- void setMinEnabled(bool enable)
设置最小化按钮可用性 - void setMinVisible(bool visible)
设置最小化按钮可见性 - void setMaxEnabled(bool enable)
设置最大化按钮可用性 - void setMaxVisible(bool visible)
设置最大化按钮可见性
- void setMinEnabled(bool enable)
- TitleBar类重新QWidget如下函数
- virtual void painEvent(QPaintEvent*)
- virtual void mousePressEvent(QMouseEvent* event);
记录鼠标按下的标记m_pressed - virtual void mouseReleaseEvent(QMouseEvent* event);
清除鼠标按下的标记m_pressed - virtual void mouseDoubleClickEvent(QMouseEvent* event);
实现鼠标左键双击标题栏放大、缩小窗口 - virtual void mouseMoveEvent(QMouseEvent* event);
实现鼠标左键拖着窗口移动
- TitleBar类定义私有变量
- QWidget* m_parent;
保存父窗口,用于窗口移动、双击放大、缩小 - bool m_pressed;
保存鼠标左键是否按下,用于拖拽窗口 - QPoint m_move_pos;
保存鼠标左键移动位置,用于推拽窗口到指定位置
- QWidget* m_parent;