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 :
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 #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
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
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(); }
colleAffiche fonctionne mais pas dropAffiche.
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(); }
Qu'est-ce qui m’échappe ?
Cordialement
Partager