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