Frage

Ich benutze QStandardItemModel mit einer QTreeView, Ich wollte, dass das linke Bereich die Knoten und den rechten Bereich anzeigt, um den Wert des Knotens anzuzeigen, der in diesem Fall Spalte 0 und Spalte 1 ist.

Die Konstruktion von Knoten war ziemlich erfolgreich, aber wenn ich versuche, Werte in dieses Modell mitzulegen QStandardItem::insertRow(1, XX), Der Artikel erschien überhaupt nicht, gibt es etwas, das ich verpasst habe?

@aktualisieren:

Da ich rekursiv Knoten erstelle, verwende ich:

void Widget::addNode(QStandardItem *parent, const QVariant & data)
{
     QStandardItem *childKey = ...; // left pane
     QStandardItem *childValue = ...; // right pane

     parent->appendRow (childKey);

}

Ich kann nicht einfach benutzen model.setItem() Anhängen childValue Da es in die falsche Zeile ging und QTreeview standardmäßig nicht erweitert wird, wenn ein neuer Knoten angehängt ist.

War es hilfreich?

Lösung

Überprüfen Sie Ihren Code, um sicherzustellen, dass Sie dem Modell mitgeteilt haben, wie viele Spalten Sie möchten, dh, dass Sie angerufen haben QStandardItemmodel :: setColumnCount (), um das Modell von den zusätzlichen Spalten zu erzählen.

Bearbeiten

Dann müssen Sie den Wert jedes Elements in jeder Spalte festlegen. Eine Möglichkeit, dies zu tun, besteht darin, zu verwendenQStandardItemModel::setItem ( int row, int column, QStandardItem * item)

Legt das Element für die angegebene Zeile und Spalte auf Element fest. Das Modell übernimmt den Besitz des Artikels. Bei Bedarf werden die Zeilenzahl und die Spaltenzahl für den Artikel erhöht. Der vorherige Element am angegebenen Ort (falls vorhanden) wird gelöscht.

Andere Tipps

Sie können einem Elternteil für denselben untergeordneten Knoten wie folgt mehrere Spalten gleichzeitig hinzufügen:

void Widget::addNode(QStandardItem *parent, const QVariant & data)
{
     QStandardItem *childKey = ...; // left pane
     QStandardItem *childValue = ...; // right pane

     QList<QStandardItem*> childColumns;
     childColumns<< childKey << childValue;

     parent->appendRow(childColumns);

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top