Details
-
Bug
-
Resolution: Done
-
P2: Important
-
None
-
5.0.0 Beta 1
-
None
-
Ubuntu 12.04, xcb
-
e840b8b2e3d62dfc222b672a0ba32e7da8dc159e
Description
Star a drag from the demo application and drop inside the sample application. Move cursor over messagebox. It shows 'do not drop cursor', but should show an arrow.
#include <QtWidgets/QMessageBox> #include <QtCore/QDebug> #include <QtGui/QDropEvent> #include <QtGui/QDrag> #include <QtGui/QClipboard> #include <QtWidgets/QInputDialog> #include <QtWidgets/QLabel> #include <QtWidgets/QApplication> #include <QtCore/QMimeData> #include <QtCore/QBuffer> #include <QtGui/QImage> #include <QtGui/QPixmap> //#include <QtGui> //#include <QtCore> class MyWidget : public QLabel { Q_OBJECT public: MyWidget() : QLabel(0) { setMinimumSize(QSize(200, 200)); setAcceptDrops(true); } protected: virtual void mouseMoveEvent(QMouseEvent*) { QDrag* drag = new QDrag(this); QMimeData* mimeData = new QMimeData; mimeData->setText(text()); drag->setMimeData(mimeData); drag->exec(); } virtual void dragEnterEvent(QDragEnterEvent* event) { //qDebug() << "dragEnterEvent: " << event->proposedAction(); event->acceptProposedAction(); } virtual void dragMoveEvent(QDragMoveEvent* event) { //qDebug() << "dragMoveEvent: " << event->proposedAction(); event->acceptProposedAction(); } virtual void dropEvent(QDropEvent* event) { const QMimeData* mimeData = event->mimeData(); if (QMessageBox::question(0, "Confirmation required", "Do you want to paste?", QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { if (mimeData->hasText()) { qWarning("retrieving text"); setText("#" + mimeData->text() + " yo"); } } qDebug() << "done with data"; event->acceptProposedAction(); } }; int main( int argc, char ** argv ) { QApplication app(argc, argv); qDebug() << "V: " << qVersion(); MyWidget w1; w1.setText("Drag/drop widget"); w1.show(); return app.exec(); } #include "dnd_modaldlg.moc"