ドラッグアンドドロップをサポートする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 で行われたとしても
何か案は ?