赞
踩
如下图:
无边框界面只需继承下面的基类即可。
WinNoFrameUI.h
- #ifndef WINNOFRAMEUI_H
- #define WINNOFRAMEUI_H
-
- #include <QWidget>
- #include <QLabel>
- #include <QFrame>
-
- class QToolButton;
-
- #define MARGIN 5 // 四个角的长度,伸缩窗口时用到
-
- class WinNoFrameUI : public QWidget
- {
- Q_OBJECT
-
- public:
- WinNoFrameUI(QWidget *parent = NULL);
- ~WinNoFrameUI();
-
- void SetWindowTitle(const QString title);
- void SetWindowTitleIcon(const QIcon icon);
- void SetWindowTitleColor(const QString sColor);
- void CreateWindowButton();
-
- int countFlag(QPoint p, int row); // 计算鼠标在哪一列和哪一行
- void setCursorType(int flag); // 根据鼠标所在位置改变鼠标指针形状
- int countRow(QPoint p); // 计算在哪一列
-
- protected:
- virtual void mousePressEvent(QMouseEvent *event);
- virtual void mouseDoubleClickEvent(QMouseEvent *event);
- virtual void mouseMoveEvent(QMouseEvent *event);
- virtual void mouseReleaseEvent(QMouseEvent *event);
-
- private slots:
- void showMinWindow();
- void showMaxWindow();
-
- public:
- QWidget * m_pWidget;
- QToolButton * m_pTitleTBtn; // 窗口标题
- QToolButton * m_pMinTBtn; // 最小化按钮
- QToolButton * m_pMaxTBtn; // 最大化按钮
- QToolButton * m_pCloseTBtn; // 关闭按钮
- QFrame * m_pLine; // 标题栏分割线
-
- private:
- bool m_Drag; //判断鼠标左键是否按下
- QPoint m_DragPosition; // 用于移动窗口
- bool m_bMoved; // true:正在移动
- int curPos; // 用于判断是移动窗口还是伸缩窗口
- };
-
- #endif // WINNOFRAMEUI_H
WinNoFrameUI.cpp
- #include "WinNoFrameUI.h"
-
- #include <QToolButton>
- #include <QMouseEvent>
- #include <QStyle>
- #include <QHBoxLayout>
- #include <QApplication>
- #include <QDesktopWidget>
- #include <QDebug>
-
- WinNoFrameUI::WinNoFrameUI(QWidget *parent)
- : QWidget(parent)
- {
- m_bMoved = false;
-
- this->setM
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。