【发布时间】:2021-12-11 05:21:31
【问题描述】:
我有一个包含QTreeWidget 的类,其中我有一些QTreeWidgetItem。
我想将QTreeWidgetItem 拖放到QGraphicsScene 中,以便在其中创建一个对象。该对象是一个矩形,其中包含QTreeWidgetItem 的文本。
我能够执行拖放操作,并且我有我的dropEvent 虚拟方法来处理它。它接收到 drop 事件,但我无法检索有关原始 QTreeWidgetItem 的信息。
这是我用来初始化QTreeWidget的代码:
m_nodeList = new QTreeWidget(this);
m_nodeList->setColumnCount(2);
m_nodeList->setHeaderLabels({ NameLabel, CategoryLabel });
m_nodeList->setDragEnabled(true);
m_nodeList->setDragDropMode(QAbstractItemView::DragOnly);
QGraphicsScene 的 Scene 子类中的 dropEvent 重写方法如下:
void Scene::dropEvent(QGraphicsSceneDragDropEvent* event) {
event->acceptProposedAction();
for (const auto& it : event->mimeData()->formats()) {
std::string f = it.toStdString();
int i = 0;
}
std::string t = event->mimeData()->text().toStdString();
std::string on = event->mimeData()->objectName().toStdString();
}
f 包含application/x-qabstractitemmodeldatalist,而其他字符串为空。
如何检索我拖入QGraphicsScene 的QTreeWidgetItem 的相关信息?
【问题讨论】:
标签: c++ qt drag-and-drop qgraphicsscene qtreewidget