头文件
protected:
void paintEvent(QPaintEvent* ) override;
void mouseMoveEvent(QMouseEvent *e) override;
void mousePressEvent(QMouseEvent *e) override;
void mouseReleaseEvent(QMouseEvent *) override;
private:
Ui::MainInterface *ui;
QPoint press_point;//鼠标按下去的点
bool is_move;
源文件
void MainInterface::paintEvent(QPaintEvent *)
{
QPixmap pixmap = QPixmap(QApplication::applicationDirPath() + QString("/") + XX_MAINFRAME_BACKGROUND).scaled(this->size());
QPainter painter(this);
painter.drawPixmap(this->rect(), pixmap);
}
void MainInterface::mouseMoveEvent(QMouseEvent *e)
{
if((e->buttons() == Qt::LeftButton) && is_move)
{
QWidget::mousePressEvent(e);
QPoint mouseP = e->globalPos();
QPoint endP(mouseP.x() - press_point.x(), mouseP.y() - press_point.y());
this->move(endP);
}
}
void MainInterface::mousePressEvent(QMouseEvent *e)
{
is_move = true;
press_point = QPoint();
QWidget::mousePressEvent(e);
QPoint mouseP = e->globalPos();
int x = this->geometry().topLeft().x();
int y = this->geometry().topLeft().y();
int x_w = mouseP.x() - x;
int y_w = mouseP.y() - y;
press_point.setX(x_w);
press_point.setY(y_w);
}
void MainInterface::mouseReleaseEvent(QMouseEvent *)
{
if(is_move)
{
is_move = false;
}
}