关于qt:在QTreewidget中使用Drag and Drop事件插入多个文件

Multiple file insert in QTreewidget using Drag and Drop events

我在 MAC OSx 上使用 Qt4.7。我想使用拖放事件在 QTreewidget 中插入文件。我想一次添加多个文件。我正在使用这个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void MainWindow::dragEnterEvent(QDragEnterEvent * e)
{
    if(e->mimeData()->hasUrls())
    {
        e->acceptProposedAction();
    }

}
void MainWindow::dropEvent(QDropEvent * e)
{
    QTreeWidgetItem *Items = new QTreeWidgetItem(ui->treeWidget);
    foreach(const QUrl &url,e->mimeData()->urls())
    {
        const QString &filename = url.toLocalFile();
        qDebug() <<"Dropped file:" << filename;
        Items->setText(0,filename);
    }
}

使用它,我一次只能插入一个文件。有没有人可以帮助我解决这个问题?您的帮助将不胜感激。

谢谢,
阿什。


问题是您只创建了一个树视图项。但是,您使用 mime 数据传递的每个 Url 都需要一个:

1
2
3
4
5
6
7
8
9
void MainWindow::dropEvent(QDropEvent *e)
{
    foreach(const QUrl &url, e->mimeData()->urls()) {
        QString filename = url.toLocalFile();
        qDebug() <<"Dropped file:" << filename;
        QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget);
        item->setText(0, filename);
    }
}