当前位置:   article > 正文

Qt之无边框自定义最小化、关闭按钮并实现窗口移动及伸缩窗口_qt自定义标题栏后如何自由伸缩窗体

qt自定义标题栏后如何自由伸缩窗体

如下图:

无边框界面只需继承下面的基类即可。 

WinNoFrameUI.h

  1. #ifndef WINNOFRAMEUI_H
  2. #define WINNOFRAMEUI_H
  3. #include <QWidget>
  4. #include <QLabel>
  5. #include <QFrame>
  6. class QToolButton;
  7. #define MARGIN 5 // 四个角的长度,伸缩窗口时用到
  8. class WinNoFrameUI : public QWidget
  9. {
  10. Q_OBJECT
  11. public:
  12. WinNoFrameUI(QWidget *parent = NULL);
  13. ~WinNoFrameUI();
  14. void SetWindowTitle(const QString title);
  15. void SetWindowTitleIcon(const QIcon icon);
  16. void SetWindowTitleColor(const QString sColor);
  17. void CreateWindowButton();
  18. int countFlag(QPoint p, int row); // 计算鼠标在哪一列和哪一行
  19. void setCursorType(int flag); // 根据鼠标所在位置改变鼠标指针形状
  20. int countRow(QPoint p); // 计算在哪一列
  21. protected:
  22. virtual void mousePressEvent(QMouseEvent *event);
  23. virtual void mouseDoubleClickEvent(QMouseEvent *event);
  24. virtual void mouseMoveEvent(QMouseEvent *event);
  25. virtual void mouseReleaseEvent(QMouseEvent *event);
  26. private slots:
  27. void showMinWindow();
  28. void showMaxWindow();
  29. public:
  30. QWidget * m_pWidget;
  31. QToolButton * m_pTitleTBtn; // 窗口标题
  32. QToolButton * m_pMinTBtn; // 最小化按钮
  33. QToolButton * m_pMaxTBtn; // 最大化按钮
  34. QToolButton * m_pCloseTBtn; // 关闭按钮
  35. QFrame * m_pLine; // 标题栏分割线
  36. private:
  37. bool m_Drag; //判断鼠标左键是否按下
  38. QPoint m_DragPosition; // 用于移动窗口
  39. bool m_bMoved; // true:正在移动
  40. int curPos; // 用于判断是移动窗口还是伸缩窗口
  41. };
  42. #endif // WINNOFRAMEUI_H
WinNoFrameUI.cpp
  1. #include "WinNoFrameUI.h"
  2. #include <QToolButton>
  3. #include <QMouseEvent>
  4. #include <QStyle>
  5. #include <QHBoxLayout>
  6. #include <QApplication>
  7. #include <QDesktopWidget>
  8. #include <QDebug>
  9. WinNoFrameUI::WinNoFrameUI(QWidget *parent)
  10. : QWidget(parent)
  11. {
  12. m_bMoved = false;
  13. this->setM
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/94960
推荐阅读
相关标签
  

闽ICP备14008679号