2017-09-08 1 views
4

J'ai personnalisé QTableWidget, comment je peux faire glisser & Passer des index de table au dossier? J'ai la collection QList avec des fichiers d'archive.
Ce code fonctionne parfaitement pour déposer à l'applicationQt Drag & Drop de QTableWidget au dossier

void ArchiveQTableWidget::keyPressEvent(QKeyEvent *event) 
{ 
    if (event->key() == Qt::Key_Return && currentRow() > -1) 
     enterClicked(currentIndex()); 
    QTableWidget::keyPressEvent(event); 
} 

void ArchiveQTableWidget::dragEnterEvent(QDragEnterEvent *event) 
{ 
    if (event->mimeData()->hasUrls()) { 
     event->acceptProposedAction(); 
    } 
} 

void ArchiveQTableWidget::dragMoveEvent(QDragMoveEvent *event) 
{ 
    event->acceptProposedAction(); 
} 

void ArchiveQTableWidget::dragLeaveEvent(QDragLeaveEvent *event) 
{ 
    event->accept(); 
} 

void ArchiveQTableWidget::dropEvent(QDropEvent *event) 
{ 
    foreach (const QUrl &url, event->mimeData()->urls()) { 
     QString fileName = url.toLocalFile(); 
     qDebug() << "Dropped file:" << fileName; 
    } 
} 

void ArchiveQTableWidget::startDrag(Qt::DropActions supportedActions) 
{ 
    StreamQMimeData mimeData = new StreamQMimeData; 
    connect(mimeData, SIGNAL(dataRequested(QString)), 
      this, SLOT(createData(QString)), Qt::DirectConnection); 
    QDrag *drag = new QDrag(this); 
    drag->setMimeData(mimeData); 
    drag->exec(Qt::CopyAction); 
} 

Répondre

1

Vous devez appeler QMimeData::setUrls(QList<QUrl>).