#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. вот дерьмо. Я не могу поверить. Я мог бы сделать эту глупую ошибку. Спасибо за быстрый ответ.