QTreeWidget Daten auslesen?

Alles rund um die Programmierung mit Qt
Antworten
Eucalyptus
Beiträge: 2
Registriert: 29. August 2006 10:52
Wohnort: St. Gallen (CH)
Kontaktdaten:

QTreeWidget Daten auslesen?

Beitrag von Eucalyptus »

hallo Qt Spezialisten

ich hab eben erst mit Qt Programmierung begonnen und stosse da an ein - für mich - rätselhaftes Problem. Und zwar will ich die Daten eines QTreeWidgetItems auslesen und in ein Textfeld übertragen, dabei laufe ich auf folgenden Fehler...

"Unbehandelte Ausnahme bei 0x67014ffa (QtCored4.dll) in markt.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x00000018."


Der Syntax sieht wie folgt aus:

Code: Alles auswählen

void markt::showData( QTreeWidgetItem* item )
{
	QTreeWidgetItem* item_parent = item->parent();

	if( item ){

		if(item->childCount()>0) ui.lblFirmaBez->setText( item->data( 0, Qt::DisplayRole).toString() );
		else{
			ui.lblArtikelnr->setText( item->data( 0, Qt::DisplayRole).toString() );
			ui.lblArtikelBez->setText( item->data( 1, Qt::DisplayRole).toString() );    
		}
	}
	else{
		ui.lblFirmaBez->setText( QString::null );
		ui.lblFirmaText->setText( QString::null );
	}
}
was mach ich falsch??

liebe Grüsse
Eucalyptus

/edit by Christian81: code - Tags zur besseren Lesbarkeit hinzugefügt
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ist das so richtig:

Code: Alles auswählen

   QTreeWidgetItem* item_parent = item->parent();

   if( item ){

?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

@Christian81
nicht so kritisch, ich weiss, wenn man selbst drauf kommt, lernt man es
bzw. behält es im gedächtnis ;)

aber dennoch geben wir mal einen anfänger eine kleine start hilfe :)

es muss so heissen, denk ich ;)

Code: Alles auswählen

if( item == NULL )
    return;

// .... deine restliche rutine ;)
den das item, so allein ohne irgent einen member, gibt kein booleanschen (false oder true) wert zurrück ....
Zuletzt geändert von ChMaster am 30. August 2006 20:23, insgesamt 1-mal geändert.
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

if(item) oder if(item == NULL) ist egal. Ich bevorzuge ersteres - ist kürzer ;)

Ich wollte damit nur fragen ob es Sinn macht, auf item als Pointer zuzugreifen und erst danach zu prüfen ob es überhaupt != NULL ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

achso, naja, ich kenn es nur mit item == NULL, damit bin ich immer auf
der richtigen seite, wenn mal was schiefen laufen sollte ;)
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

ChMaster hat geschrieben:@Christian81
nicht so kritisch, ich weiss, wenn man selbst drauf kommt, lernt man es
bzw. behält es im gedächtnis ;)
Kennst mich doch - ich sage selten die direkte Lösung und zeige nur auf wo man langgehen sollte ;)
Aber heute waren wir ja mal nett - liegt evtl. daran dass ich bald Urlaub habe - und ihr demnach auch von mir :D
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Eucalyptus
Beiträge: 2
Registriert: 29. August 2006 10:52
Wohnort: St. Gallen (CH)
Kontaktdaten:

Beitrag von Eucalyptus »

hi leute

erstmal danke für die antworten! leider ist damit mein problem noch nicht ganz gelöst... das objekt item kann ich über die methode data() ansprechen, das funktioniert. das objekt item_parent eigentlich auch, dieses ergibt der debug ausgabe einen hex-dezimalen wert. wenn ich item_parent allerdings mit data() anspreche, schmiert mein programm mit oben genannter fehlermeldung ab...

mein slot:
connect( ui.trwFirmaArtikel, SIGNAL( currentItemChanged( QTreeWidgetItem*, QTreeWidgetItem* ) ), this, SLOT( showData( QTreeWidgetItem* ) ) );

meine funktion:
void markt::showData( QTreeWidgetItem* item )
{
if( item == NULL )
return;

QTreeWidgetItem* item_parent = item->parent();
qDebug() << "markt::showData(..)" << item->data( 0, Qt::DisplayRole).toString() << item_parent->data( 0, Qt::DisplayRole).toString();
}


meine frage:
woran kann das liegen?

*gg*

hab auch bald urlaub, ab nach thailand - neee, nicht was ihr jetzt denkt. brav mit der freundin ;-)

liebe Grüsse
Eucalyptus
Antworten