Quantcast
Channel: Jobs
Viewing all articles
Browse latest Browse all 18427

QTreeWidgen in QDockWidget doesn't receive dragEnterEvent when it is undocked

$
0
0
Hello, good day, I have a QTreeWidgen within a QDockWidget that when docked receives and processes of Drag & Drop events correctly, but when it is undocked you receive nothing. Is this normal? This is the statement: class ListaWidget : public QListWidget {     Q_OBJECT       QPoint              dragStartPosition;   public:       ListaWidget(QString nombre, QWidget *parent) : QListWidget(parent)     {         this->setIconSize(QSize(24,24));         this->setFlow(QListView::LeftToRight);         this->setWrapping(true);         this->setViewMode(QListView::IconMode);         this->setResizeMode(QListView::Adjust);         this->setWordWrap(true);         this->setObjectName(nombre);         setDragEnabled(true);         setAcceptDrops(true);     }       void dragEnterEvent(QDragEnterEvent *event);     void dragMoveEvent(QDragMoveEvent *event);     void dragLeaveEvent(QDragLeaveEvent *event);     void dropEvent(QDropEvent *event);       void mousePressEvent(QMouseEvent *event);     void mouseMoveEvent(QMouseEvent *event);   signals:     void informacion(QString info); }; And this is the implementation: //-----------------------------------------------------------------------------   void ListaWidget::mousePressEvent(QMouseEvent *event) {     emit informacion("void ListaWidget::mousePressEvent(QMouseEvent *event)");       if (event->button() == Qt::LeftButton)     {         dragStartPosition = event->pos();         emit informacion("\tQt::LeftButton");     }     else if ( event->button() == Qt::RightButton )     {         emit informacion("\tQt::RightButton");     } }   //-----------------------------------------------------------------------------   void ListaWidget::mouseMoveEvent(QMouseEvent *event) {     if (!(event->buttons() & Qt::LeftButton))         return;     if ((event->pos() - dragStartPosition).manhattanLength()             < QApplication::startDragDistance())         return;       emit informacion("void ListaWidget::mouseMoveEvent(QMouseEvent *event)");       QDrag *drag = new QDrag(this);     QMimeData *mimeData = new QMimeData;       QList <QUrl> urls;     QUrl url("file:///E:/Descargas/dcpcrypt2-xe-update2.zip");               emit informacion("\turls.append(url);");     urls.append(url);             emit informacion("\tmimeData->setText(this->objectName());");     mimeData->setText(this->objectName());             emit informacion("\tmimeData->setUrls(urls);");     mimeData->setUrls(urls);             emit informacion("\tdrag->setMimeData(mimeData);");     drag->setMimeData(mimeData);               emit informacion("\tdrag->exec(Qt::CopyAction);");     drag->exec(Qt::CopyAction);             emit informacion("\t######## FIN ########"); }   //-----------------------------------------------------------------------------   void ListaWidget::dragEnterEvent(QDragEnterEvent *event) {     event->acceptProposedAction(); }   //-----------------------------------------------------------------------------   void ListaWidget::dragMoveEvent(QDragMoveEvent *event) {     event->acceptProposedAction(); }   //-----------------------------------------------------------------------------   void ListaWidget::dragLeaveEvent(QDragLeaveEvent *event) {     event->accept(); }   //-----------------------------------------------------------------------------   void ListaWidget::dropEvent(QDropEvent *event) {     emit informacion("void ListaWidget::dropEvent(QDropEvent *event)");       if (event->mimeData()->hasText())     {         if (event->mimeData()->text() == this->objectName())         {             emit informacion("\tSALIENDO de void ListaWidget::dropEvent(QDropEvent *event)");             return;         }     }       // extrae los datos mime del evento     const QMimeData *mimeData = event->mimeData();       // identifica el dato mime recibido     if (mimeData->hasImage())         emit informacion(tr("\t######## Imagen ########"));     else if (mimeData->hasHtml())         emit informacion(tr("\t######## HTML : ") + mimeData->html());     else if (mimeData->hasText())         emit informacion(tr("\t######## TEXT : ") + mimeData->text());     else if (mimeData->hasUrls())     {         QList<QUrl> urlList = mimeData->urls();           emit informacion("------------------------------------");         for (int i = 0; i < urlList.size() && i < 32; ++i)         {             emit informacion(tr("\t") + urlList.at(i).path());         }         emit informacion("------------------------------------");     }     else         emit informacion(tr("No se pueden mostrar los datos"));       for (int i=0; i<mimeData->formats().count(); i++)         emit informacion("\t" + mimeData->formats().value(i));     emit informacion("------------------------------------");       event->acceptProposedAction(); }   //-----------------------------------------------------------------------------

Viewing all articles
Browse latest Browse all 18427

Trending Articles