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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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