【问题标题】:Multiple file insert in QTreewidget using Drag and Drop events使用拖放事件在 QTreewidget 中插入多个文件
【发布时间】:2014-06-30 09:26:10
【问题描述】:

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

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

谢谢, 阿什。

【问题讨论】:

    标签: qt qtreewidget qtreewidgetitem qmouseevent


    【解决方案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);
        }
    }
    

    【讨论】:

    • 哦,废话。我不敢相信。我本可以犯这个愚蠢的错误。感谢您的快速响应。
    猜你喜欢
    • 2018-03-15
    • 1970-01-01
    • 2020-10-22
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    相关资源
    最近更新 更多