Expand bei QTreeWidget

Alles rund um die Programmierung mit Qt
Antworten
Qt_Starter
Beiträge: 23
Registriert: 16. November 2007 21:04

Expand bei QTreeWidget

Beitrag von Qt_Starter »

Hallo,

ich nutze als DisplayWidget ein QTreeWidget und habe die Möglichkeit über einen Dialog die Inhalte des TreeWidgets zu manipulieren. Als Model für das QTreeWidget nutze ich das QtreeWidgetItem, indem alle daten „gespeichert“ sind.
Jetzt will ich bei Änderung eines Wertes im Dialog, das genau diese Stelle im Tree aufgeklappt wird.
Laut Doku ist dies mit „expand(...)“ möglich, jedoch habe ich jetzt noch das Problem den QmodelIndex mit dem QTreeWidget zu füllen.

Zur Veranschaulichung (da meine Erklärung vielleicht zu schlecht war):

Dialog:
Seite3, Zeile2 setze Wert: Neu

TreeWidget:

Code: Alles auswählen

-Buch
	+Seite1
	+Seite2
	-Seite3
		+Zeile1
		-Zeile2			Alt
		+Zeile3
	+Seite4
Wie kann ich das machen?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Code: Alles auswählen

void QTreeWidget::expandItem(const QTreeWidgetItem *item)
Benötigt keinen QModelIndex...
Qt_Starter
Beiträge: 23
Registriert: 16. November 2007 21:04

@upsala

Beitrag von Qt_Starter »

Hab ich auch probiert, aber leider klappt es nicht. Vielleicht hilft ein wenig Code, wobei alle Daten im "p_displayConfigItem stecken:

Code: Alles auswählen

QTreeWidgetItem *updatedSectionItem = new QTreeWidgetItem(0);
QTreeWidgetItem *updatedOptionItem = new QTreeWidgetItem(0);

updatedSectionItem = p_displayConfigItem->takeChild(sectionID);

updatedOptionItem = updatedSectionItem->takeChild(optionID);	

TreeController->expandCurrentItem(updatedOptionItem);
		
updatedOptionItem->setText(1, newContent);
updatedSectionItem->insertChild(optionID, updatedOptionItem);
p_displayConfigItem->insertChild(sectionID, updatedSectionItem);	

TreeController->expandCurrentItem(updatedOptionItem);
wobei ich dann später zunächst alles wieder "einklappe" und danach dann versuche so zu öffnen:

Code: Alles auswählen

void QTreeWidget::collapseAll();
void QTreeWidget::expandItem(updatedOptionItem);
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Was ist denn expandCurrentItem? Eine Methode von QTreeWidget ist es jedenfalls nicht.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Vor allem entfernt takeChild das Item, somit kann es auch nicht mehr 'expanded' werden.
Qt_Starter
Beiträge: 23
Registriert: 16. November 2007 21:04

Beitrag von Qt_Starter »

Mit expandCurrentItem übergebe ich nur den Pointer an die Klasse TreeController, die dann den eigentlichen Expand durchführt.

Code: Alles auswählen

void TreeController::expandCurrentItem(QTreeWidgetItem *item)
{
void QTreeWidget::collapseAll();
void QTreeWidget::expandItem(item);
}
Qt_Starter
Beiträge: 23
Registriert: 16. November 2007 21:04

Beitrag von Qt_Starter »

Vor allem entfernt takeChild das Item, somit kann es auch nicht mehr 'expanded' werden.
Richtig, so steht es in der Doku. Deshalb dachte ich, das ich vielleicht über ein QModelIndex die jeweilige Stelle "expanden" kann. Oder gibt es noch eine andere Möglichkeit für :

Code: Alles auswählen

void QTreeWidget::expandItem(const QTreeWidgetItem *item)
um an das jeweilige Item zu kommen?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Guck doch mal durch welche Möglichkeiten du bei einem QTreeWidgetItem hast, um an ein ChildItem zu kommen. So viele sind es ja nicht.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Antworten