MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
draggableframelesswidget.cpp
Go to the documentation of this file.
1//=============================================================================================================
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
40
41//=============================================================================================================
42// QT INCLUDES
43//=============================================================================================================
44
45#include <QWidget>
46#include <QMouseEvent>
47
48//=============================================================================================================
49// EIGEN INCLUDES
50//=============================================================================================================
51
52//=============================================================================================================
53// USED NAMESPACES
54//=============================================================================================================
55
56using namespace DISPLIB;
57
58//=============================================================================================================
59// DEFINE MEMBER METHODS
60//=============================================================================================================
61
63 Qt::WindowFlags flags,
64 bool bRoundEdges,
65 bool bDraggable,
66 bool bFrameless)
67: QWidget(parent, flags)
68, m_bRoundEdges(bRoundEdges)
69, m_bDraggable(bDraggable)
70, m_bMousePressed(false)
71{
72 this->setWindowFlag(Qt::CustomizeWindowHint, bFrameless);
73 this->adjustSize();
74}
75
76//=============================================================================================================
77
81
82//=============================================================================================================
83
85{
86 m_bDraggable = bFlag;
87}
88
89//=============================================================================================================
90
92{
93 if(!m_bDraggable) {
94 return QWidget::mousePressEvent(event);
95 }
96
97 if (event->button() == Qt::LeftButton) {
98 m_dragPosition = event->globalPos() - frameGeometry().topLeft();
99 event->accept();
100 m_bMousePressed = true;
101 }
102}
103
104//=============================================================================================================
105
107{
108 if(!m_bDraggable) {
109 return QWidget::mouseMoveEvent(event);
110 }
111
112 if (event->buttons() && Qt::LeftButton && m_bMousePressed) {
113 move(event->globalPos() - m_dragPosition);
114 event->accept();
115 }
116}
117
118//=============================================================================================================
119
121{
122 if(event->button() == Qt::LeftButton) {
123 m_bMousePressed = false;
124 }
125}
126
127//=============================================================================================================
128
129void DraggableFramelessWidget::resizeEvent(QResizeEvent * /* event */)
130{
131 if(m_bRoundEdges) {
132 setMask(roundedRect(QRect(0,0,width(),height()),10));
133 }
134}
135
136//=============================================================================================================
137
138QRegion DraggableFramelessWidget::roundedRect(const QRect& rect, int r)
139{
140 QRegion region;
141 // middle and borders
142 region += rect.adjusted(r, 0, -r, 0);
143 region += rect.adjusted(0, r, 0, -r);
144 // top left
145 QRect corner(rect.topLeft(), QSize(r*2, r*2));
146 region += QRegion(corner, QRegion::Ellipse);
147 // top right
148 corner.moveTopRight(rect.topRight());
149 region += QRegion(corner, QRegion::Ellipse);
150 // bottom left
151 corner.moveBottomLeft(rect.bottomLeft());
152 region += QRegion(corner, QRegion::Ellipse);
153 // bottom right
154 corner.moveBottomRight(rect.bottomRight());
155 region += QRegion(corner, QRegion::Ellipse);
156 return region;
157}
Declaration of the DraggableFramelessWidget Class.
QRegion roundedRect(const QRect &rect, int r)
DraggableFramelessWidget(QWidget *parent=0, Qt::WindowFlags flags=Qt::Window, bool bRoundEdges=false, bool bDraggable=true, bool bFrameless=true)