Seite 1 von 1

QTreeWidget Daten auslesen?

Verfasst: 30. August 2006 16:05
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

Verfasst: 30. August 2006 16:37
von Christian81
Ist das so richtig:

Code: Alles auswählen

   QTreeWidgetItem* item_parent = item->parent();

   if( item ){

?

Verfasst: 30. August 2006 20:19
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 ....

Verfasst: 30. August 2006 20:22
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.

Verfasst: 30. August 2006 20:24
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 ;)

Verfasst: 30. August 2006 20:28
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

Verfasst: 31. August 2006 07:50
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