Qt 从 QTableWidget 拖放到文件夹

Posted

技术标签:

【中文标题】Qt 从 QTableWidget 拖放到文件夹【英文标题】:Qt Drag&Drop from QTableWidget to folder 【发布时间】:2018-02-17 16:50:51 【问题描述】:

我有自定义 QTableWidget,我怎样才能从表索引拖放到文件夹?我有带有存档文件的 QList 集合。 此代码非常适合拖放到应用程序

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);

【问题讨论】:

【参考方案1】:

您需要致电QMimeData::setUrls( QList&lt;QUrl&gt; )

【讨论】:

以上是关于Qt 从 QTableWidget 拖放到文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Qt 4.x:如何实现拖放到桌面或文件夹中?

为啥我不能将文件拖放到 Qt 示例拖放示例中?

在拆分的 Widget PyQt Qt 中,将 Tab 从 QtabBar 拖放到其他 QtabBar

QTableWidget控件学习

QT如何设置QTableWidget控件占满下方?

将大型虚拟文件从 C# 拖放到 Windows 资源管理器