/*头文件*/
/*该部分代码,只是实现了拖放四边,放大缩小窗口,*/
class myWidget : public QWidget { typedef enum { REPORT_SIDES_MARK_MIN = -1, REPORT_SDIES_MARK_TOP, REPORT_SDIES_MARK_LEFT, REPORT_SDIES_MARK_RIGHT, REPORT_SDIES_MARK_BOTTOM, REPORT_SDIES_MARK_MAX
}REPORT_SIDES_MARK_ENUM; Q_OBJECT public: myWidget(QWidget *parent = Q_NULLPTR); ~myWidget();
protected: void mouseMoveEvent(QMouseEvent *); void mousePressEvent(QMouseEvent *); void resizeEvent(QResizeEvent *);
private: REPORT_SIDES_MARK_ENUM m_sidesMark; };
/*实现部分代码*/
myWidget::myWidget(QWidget *parent) : QWidget(parent) , m_sidesMark(REPORT_SIDES_MARK_MIN) { this->setMouseTracking(true); this->setFocusPolicy(Qt::StrongFocus); this->setStyleSheet("background-color:rgb(0,0,0)"); this->setWindowFlags(Qt::FramelessWindowHint); }
myWidget::~myWidget() {
}
void myWidget::mouseMoveEvent(QMouseEvent *event) { if (0 < event->pos().x() && event->pos().x() < 10) { this->setCursor(Qt::SizeHorCursor); } else if (0 < event->pos().y() && event->pos().y() < 10) { this->setCursor(Qt::SizeVerCursor); } else if (this->height() - 10 < event->pos().y() && event->pos().y() < this->height()) { this->setCursor(Qt::SizeVerCursor); } else if (this->width() - 10 < event->pos().x() && event->pos().x() < this->width()) { this->setCursor(Qt::SizeHorCursor); } else { this->setCursor(Qt::SizeAllCursor); }
if (event->buttons() & Qt::LeftButton) { if (m_sidesMark == REPORT_SDIES_MARK_TOP) /*顶*/ { QRect rect = this->geometry(); rect.setTop(this->mapToParent(event->pos()).y()); this->setGeometry(rect); } else if (m_sidesMark == REPORT_SDIES_MARK_RIGHT)/*右*/ { QRect rect = this->geometry(); rect.setRight(this->mapToParent(event->pos()).x()); this->setGeometry(rect);
} else if (m_sidesMark == REPORT_SDIES_MARK_LEFT) /*左*/ { QRect rect = this->geometry(); rect.setLeft(this->mapToParent(event->pos()).x()); this->setGeometry(rect); } else if (m_sidesMark == REPORT_SDIES_MARK_BOTTOM) /*底*/ { QRect rect = this->geometry(); rect.setBottom(this->mapToParent(event->pos()).y()); this->setGeometry(rect); } } QWidget::mouseMoveEvent(event); }
void myWidget::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { if (0 < event->pos().x() && event->pos().x() < 10) /*左*/ { m_mouseLeftClick = true; m_sidesMark = REPORT_SDIES_MARK_LEFT; } else if (0 < event->pos().y() && event->pos().y() < 10) /*顶*/ { m_mouseLeftClick = true; m_sidesMark = REPORT_SDIES_MARK_TOP; } else if (this->height() - 10 < event->pos().y() && event->pos().y() < this->height()) /*下*/ { m_mouseLeftClick = true; m_sidesMark = REPORT_SDIES_MARK_BOTTOM; } else if (this->width() - 10 < event->pos().x() && event->pos().x() < this->width()) /*右*/ { m_mouseLeftClick = true; m_sidesMark = REPORT_SDIES_MARK_RIGHT; } }
QWidget::mousePressEvent(event); }
void myWidget::resizeEvent(QResizeEvent *event) {
QWidget::resizeEvent(event); }