Seite 1 von 1

QTreeItem und SIGNAL()

Verfasst: 3. August 2007 16:03
von D_ron
Hallo,

ich habe ein QTreeWidgetItem (TOPLEVEL) dem zur Laufzeit mehrere Childs angefügt werden.

Für diese beiden Childs möchte ich das ItemClicked()-Signal an einen gesonderten Slot hängen.

Dazu folgender Code:

Anmerkung: local_serialWigetItem = Toplevelitem

Code: Alles auswählen

for(int iSerialCounter = 0; iSerialCounter < local_serialWigetItem->childCount(); iSerialCounter++){
	
bool bReturn = connect(local_serialWigetItem->child(iSerialCounter), SIGNAL(itemClicked(QTreeWidgetItem*, int)), ui.TreeWidget, SLOT(showInfo(QTreeWidgetItem*, int))); 
			
}//for
Folgenden Compilerfehler erhalte ich:
Error 2 error C2664: 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)' : cannot convert parameter 1 from 'QTreeWidgetItem *' to 'const QObject *'

Re: QTreeItem und SIGNAL()

Verfasst: 3. August 2007 17:01
von neuschi
D_ron hat geschrieben:Hallo,

ich habe ein QTreeWidgetItem (TOPLEVEL) dem zur Laufzeit mehrere Childs angefügt werden.

Für diese beiden Childs möchte ich das ItemClicked()-Signal an einen gesonderten Slot hängen.
Vielleicht liegt das daran, dass die Mehrzahl von child "children" lautet .:wink:

Im Ernst:

QTreeWidgetItem ist nicht von QObject abgeleitet, also funktionieren Signals+Slots damit nicht.


Folgenden Compilerfehler erhalte ich:
Das ist dann mehr ein Compile-Fehler und kein Compiler-Fehler :wink:

\Ralf

Verfasst: 6. August 2007 15:41
von lepsai
Um das zu erreichen, was du willst, musst du eine Liste mit den "gesonderten" Items anlegen, und in deinem Slot prüfen, ob das auslösende Item in der Menge drin ist oder nicht. Dann kannst du entweder deine Logik für diese "Sonder"-Items direkt umsetzen oder ein weiteres Signal generieren.