Glisser-déposer avec QLabel sur une image
Bonsoir,
je voudrais faire un drag d'une image jpg venant d'internet sur un site le permettant et le dropper sur le Qlabel de mon appli.
j'ai testé le copier coller cela fonctionne mais je ne sais pas trop ou je dérape dans le drag and drop.
Voici ce que je fais :
myLabel.h :
Code:
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
| #ifndef MYLABEL_H
#define MYLABEL_H
#include <QLabel>
class MyLabel : public QLabel
{
Q_OBJECT
public:
explicit MyLabel(QWidget *parent = 0);
~MyLabel();
signals:
void clicked();
void clicked2();
void drag();
void drop();
protected:
void mousePressEvent(QMouseEvent *e);
void dragEnterEvent(QDragEnterEvent *e);
void dropEvent(QDropEvent *e);
};
#endif |
myLabel.cpp :
Code:
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
| #include "myLabel.h"
#include <QLabel>
MyLabel::MyLabel(QWidget *parent) :
QLabel(parent)
{
setAcceptDrops(true);
}
MyLabel::~MyLabel()
{
}
void MyLabel::mousePressEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton)
{
emit clicked();
}
if (e->button() == Qt::RightButton)
{
emit clicked2();
}
}
void MyLabel::dragEnterEvent(QDragEnterEvent *e)
{
e->acceptProposedAction();
emit drag();
}
void MyLabel::dropEvent(QDropEvent *e)
{
e->acceptProposedAction();
emit drop();
} |
dans mon QtGestXavMedias.cpp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| QtGestXavMedias::QtGestXavMedias(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::QtGestXavMedias)
{....
connect(ui->label, SIGNAL(clicked2()), this, SLOT(colleAffiche()));
connect(ui->label, SIGNAL(drop()), this, SLOT(dropAffiche()));
...}
void QtGestXavMedias::colleAffiche()
{
QMessageBox::StandardButton colle;
colle = QMessageBox::warning(this, tr("Coller"), tr("Coller l'image ?"), QMessageBox::Yes | QMessageBox::No);
if (colle == QMessageBox::Yes){
originalPixmap = QApplication::clipboard()->pixmap();
updateImage();
}
}
void QtGestXavMedias::dropAffiche()
{
updateImage();
} |
colleAffiche fonctionne mais pas dropAffiche.
Qu'est-ce qui m’échappe ?
Cordialement