我确实有一个带有支持拖放的 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 中完成
有任何想法吗 ?