1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include "tbi.h"
TBI::TBI(QWidget *parent, Qt::WindowFlags f)
: QWidget (parent,f)
{
openArea.setRect(0,0,0,0);
}
void TBI::mousePressEvent(QMouseEvent* event) {
this->clearMask();
this->updateGeometry();
this->repaint();
pressedPos = event->pos();
}
void TBI::mouseReleaseEvent(QMouseEvent* event) {
releasedPos = event->pos();
setOpenArea(pressedPos.x(),pressedPos.y(),releasedPos.x()-pressedPos.x(),releasedPos.y()-pressedPos.y());
}
void TBI::setOpenArea(int x, int y, int w, int h) {
openArea.setRect(x,y,w,h);
openArea = openArea.normalized();
QPoint p =mapFromGlobal ( frameGeometry().topLeft() ) ;
QRect rectAll(p,frameGeometry().size());
QRegion regAll(rectAll);
QRegion myRegion(openArea);
this->setMask(regAll.subtracted(myRegion));
this->updateGeometry();
this->repaint();
}
QRect TBI::getOpenArea() {
return openArea;
} |
Partager