使用拖放事件在QTreewidget中插入多个文件

时间:2014-06-30 09:26:10

标签: qt qtreewidget qtreewidgetitem qmouseevent

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

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

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

谢谢, 与Ashish。

1 个答案:

答案 0 :(得分:1)

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

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