24/03/19 20:53
Thejuster
Buonasera, stavo cercando di implementare una sorda di Editor di nodi simile al mio progetto in C#.
Uso ovviamente il Qt con una classe ereditata dall'oggetto QGraphicsScene.
Sto usando ovviamente una funziona "rudimentale" per capire il miglior modo ed il metodo corretto
per ottenere quello che voglio. ovvero tenere costantemente aggiornata la posizione di un QGraphicsLineItem.
Attualmente ho scritto questo codice:
Non sò se il metodo è corretto, Ma dovrei sapere se quell'item trovato nel ciclo for
corrisponde ad una QGraphicsLineItem e se si, rimuoverla per poi aggiungerla con posizioni aggiornate.
Eseguendo il qDebug ho come output: 0xc4c664
che sembra essere più un indirizzo di memoria più che un output del tipo.
Non sono ancora ben ferrato sulle conversioni dei tipo ( static, dynamic e reinterpret )
quindi probabile che stai facendo qualche macello di non sò quale portata.
ma in alternativa, conoscete un metodo per fare ciò?
Quello che intendevo fare e come in c# ( esempio )
Uso ovviamente il Qt con una classe ereditata dall'oggetto QGraphicsScene.
Sto usando ovviamente una funziona "rudimentale" per capire il miglior modo ed il metodo corretto
per ottenere quello che voglio. ovvero tenere costantemente aggiornata la posizione di un QGraphicsLineItem.
Attualmente ho scritto questo codice:
//! connessione // @param Item di origine // @param Item di destinazione void NPCEditor::Connect(QGraphicsItem *src, QGraphicsItem *dest) { NPCEditor::connection conn; conn.src = src; conn.dest = dest; conn.connected = new QGraphicsLineItem(src->x(),src->y(),dest->x(),dest->y()); scene->addItem(conn.connected); Connections.append(conn); } //Metodo Update / Paint void NPCEditor::paintEvent(QPaintEvent *e) { for(int i = 0; i < scene->items().count(); i++) { QGraphicsLineItem *linea = dynamic_cast<QGraphicsLineItem*>(scene->items().at(i)); if(linea) { scene->items().removeAt(i); } qDebug() << &linea; } }
Non sò se il metodo è corretto, Ma dovrei sapere se quell'item trovato nel ciclo for
corrisponde ad una QGraphicsLineItem e se si, rimuoverla per poi aggiungerla con posizioni aggiornate.
Eseguendo il qDebug ho come output: 0xc4c664
che sembra essere più un indirizzo di memoria più che un output del tipo.
Non sono ancora ben ferrato sulle conversioni dei tipo ( static, dynamic e reinterpret )
quindi probabile che stai facendo qualche macello di non sò quale portata.
ma in alternativa, conoscete un metodo per fare ciò?
Quello che intendevo fare e come in c# ( esempio )
var oggetto = new TextBox(); if(oggetto.GetType() == typeof(TextBox)) { //ok }
Ultima modifica effettuata da Thejuster 24/03/19 22:30
mire.forumfree.it/ - Mire Engine
C# UI Designer
C# UI Designer