3

我确实有一个带有支持拖放的 treeWidget 的应用程序。

我试图在拖放操作期间突出显示一个项目。在拖放文件时,我想突出显示目标项目。

void TreeView::dragMoveEvent(QDragMoveEvent * event)
{
    qDebug() << "On Drag Move Event";
    const QMimeData* mimeData = event->mimeData();

    event->setDropAction(Qt::CopyAction);

    if (mimeData->hasUrls())
    {
        QTreeWidgetItem *item = itemAt(event->pos());
        if(item) {
            qDebug() << "itemat: " << item->text(0);
            setStyleSheet(QString::fromUtf8("QTreeWidget::item:hover {\n"
                                              "background-color: rgb(123, 45, 67);\n"
                                             "}"));
        }
        event->setDropAction(Qt::CopyAction);
        event->acceptProposedAction();
    }
    else
        event->ignore();

//    dropSite = event->answerRect();
  //  event->acceptProposedAction();
}

有趣的是,它突出显示了该项目,但之后.. 就像 DnD 允许设置模型并在他保留它以用于整体行为之后。我期待 DnD 期间的亮点,但不是在正常使用期间。通过正常使用,我的意思是让鼠标越过任何文件到 DnD。

DnD 的亮点是预期的(通过陈词滥调选择内容并移入/移出项目)

我也有 3 列,但只有第 1 列中的项目被突出显示。

当前代码突出显示项目,但在 DnD 之后不是在期间,即使它在 dragMoveEvent 中完成

有任何想法吗 ?

4

0 回答 0