ich möchte über die freien Weihnachtstage meine C++ und Qt Kenntnisse etwas auffrischen. Ich bastele derzeit an einer kleinen Applikation, in der QTreeWidgetItems (QTreeWidget) mit QGraphicsItems (QGraphicsScene, QGraphicsView) verknüpft werden sollen.
Ich dachte ich halte die Sache klein und verzichte auf ein komplexes Model/View Konzept und speichere die Zeiger der Objekte einfach in den jeweiligen data Bereiche ab. Meine Kenntnisse zu QVariant reichen aber wohl nicht aus, um es zu implementieren.
Das speichern geht. Aber wie hole ich den Zeiger wieder aus dem QVariant zurück?
Code: Alles auswählen
void MainWindow::addText()
{
QGraphicsTextItem *textItem = graphicsScene->addText("QCanvasText");
textItem->setFlag(QGraphicsItem::ItemIsMovable);
textItem->setPos(qrand()%int(graphicsScene->width()),qrand()%int(graphicsScene->height()));
textItem->setZValue(qrand()%256);
QTreeWidgetItem *treeItem = new QTreeWidgetItem(treeWidget);
treeItem->setText(0, tr("Added text to scene"));
treeItem->setData(0, Qt::UserRole, textItem);
}
void MainWindow::editText()
{
QTreeWidgetItem *treeItem = treeWidget->currentItem();
QVariant variant = treeItem->data(0, Qt::UserRole);
QGraphicsTextItem *textItem = variant.value<QGraphicsTextItem *>();
}
Danke für eine Antwort.
toto12