[Qt]拖拽图片

————————mainwindow.h————————-
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include
#include
#include
#include

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();

private:
Ui::MainWindow *ui;
};

class DraggableLabel : public QLabel
{
Q_OBJECT

public:
explicit DraggableLabel(QWidget *parent = nullptr) : QLabel(parent), isDragging(false) {}

protected:
void mousePressEvent(QMouseEvent *event) override
{
if (event->button() == Qt::LeftButton) {
isDragging = true;
dragStartPosition = event->pos();
}
}

void mouseMoveEvent(QMouseEvent *event) override
{
if (isDragging) {
int dx = event->pos().x() – dragStartPosition.x();
int dy = event->pos().y() – dragStartPosition.y();
move(pos().x() + dx, pos().y() + dy);
}
}

void mouseReleaseEvent(QMouseEvent *event) override
{
if (event->button() == Qt::LeftButton) {
isDragging = false;
}
}

private:
bool isDragging;
QPoint dragStartPosition;
};

#endif // MAINWINDOW_H

——————————mainwindow.cpp————————————-
#include “mainwindow.h”
#include “ui_mainwindow.h”

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);

QPixmap pixmap(“/home/orangepi/11111.jpg”);
/*
ui->label->setPixmap(pixmap);

ui->label->setGeometry(50, 50, pixmap.width(), pixmap.height());

ui->label->setObjectName(“draggableLabel”);
*/

DraggableLabel *label2 = new DraggableLabel(this);

label2->setPixmap(pixmap);

label2->setGeometry(50, 50, pixmap.width(), pixmap.height());

}

MainWindow::~MainWindow()
{
delete ui;
}

发表评论

邮箱地址不会被公开。 必填项已用*标注