Вставка нескольких файлов в QTreeWidget с помощью событий перетаскивания

#qt #qtreewidget #qtreewidgetitem #qmouseevent

#qt #qtreewidget #qtreewidgetitem #qmouseevent

Вопрос:

Я работаю в Qt4.7 на MAC OSx. Я хочу вставлять файлы в 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 amp;url,e->mimeData()->urls())
    {
        const QString amp;filename = url.toLocalFile();
        qDebug() << "Dropped file:" << filename;
        Items->setText(0,filename);
    }
}
  

Используя это, я могу вставлять только один файл за раз. Есть ли кто-нибудь, кто может мне помочь в этой проблеме? Мы будем очень признательны за вашу помощь.

Спасибо, Ashish.

Ответ №1:

Проблема в том, что вы создаете только один элемент древовидного представления. Однако вам нужен один для каждого URL-адреса, который вы передали с данными mime:

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

Комментарии:

1. вот дерьмо. Я не могу поверить. Я мог бы сделать эту глупую ошибку. Спасибо за быстрый ответ.