在鼠标悬停时突出显示treewidget的项目

时间:2015-01-12 09:39:23

标签: c++ qt drag-and-drop qtreewidgetitem

我的应用程序带有支持Drag n Drop的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中完成了

有什么想法吗?

0 个答案:

没有答案