Seite 1 von 1

QTreeWidget Index ???

Verfasst: 7. Juni 2006 12:14
von joschika77
Hallo!
Wie komme ich an den Index des Items auf das ich geklickt habe?

Code: Alles auswählen


connect(ui.myTreeWidget,SIGNAL(itemClicked(QTreeWidgetItem *, int)),this,SLOT(getIndex(QTreeWidgetItem *, int)));

void EMenu::getIndex(QTreeWidgetItem * item, int column)
{
	qDebug()<<"Index:"<<item->indexOfChild();//damit gehts nicht
}
Ich brauche zwingend den Index!
Hab schon einiges probiert.Hmm...
Wer kann mir da helfen?

MfG

Verfasst: 7. Juni 2006 12:40
von ChMaster

Code: Alles auswählen

void EMenu::getIndex(QTreeWidgetItem * item, int column) 
{
    // so :)
    QTreeWidgetItem *item1;
    qDebug() << "Index: " << item1->indexOfChild( item );
}  

Verfasst: 7. Juni 2006 12:51
von joschika77
Wie? Gibt das nicht einen null Pointer?Woher soll das Item1 den Index wissen?

MfG

Verfasst: 7. Juni 2006 16:07
von joschika77
Gibt es keine Funktion beim QTreeWidget wo man den geklickten Index bekommt & ihn dann bspw. in ner switch auszuwerten?Wenn nicht, was für Alternativen hab ich in QT? :cry:

MfG

Verfasst: 8. Juni 2006 07:09
von macman
Du kannst den Index eines TopLevelItems bekommen, den der Kinder nicht. Was für einen Index willst Du überhaupt? Das wievielte Item von oben angeklickt wurde, abhängig davon wie viele Items aufgeklappt sind? Das geht nicht. Einzige Möglichkeit wäre deinen Items einen Index mitzugeben, dann sind die aber konstant.

So lange Du also nicht schreibst was Du erreichen willst, kann man nur sagen "geht nicht".

Verfasst: 8. Juni 2006 07:47
von joschika77
Hi macman!

Ich brauche den Index um dann z.B. in ner Switch(index) abzufangen welches neue Fenster aufgemacht werden soll.Könnte das ja auch mit text() abfangen, ist aber schlecht wenn das Prog z.B. mal in Englisch ausgeliefert werden soll, weist?Da ist der Index auf welches Item ich geklickt habe schon eindeutiger! Oder was meinst du
Du kannst den Index eines TopLevelItems bekommen.
Und die der dazugehörigen Childs nicht?

MfG

Verfasst: 8. Juni 2006 07:58
von macman
Also willst Du nur deine Items anhand einer Nummer identifizieren. Dann guck Dir mal die Konstruktoren von QTreeWidgetItem an. Denen kannst Du einen Integer-Wert mitgeben, den Du später abfragen kannst. Der ändert sich auch nicht durch Sortierungen oder auf- und zuklappen.

Verfasst: 8. Juni 2006 08:07
von joschika77
connect(ui.myTreeWidget,SIGNAL(itemClicked(QTreeWidgetItem *, int)),this,SLOT(getIndex(QTreeWidgetItem *, int)));
Muß ich das im signal machen?Oder wie meinst das?

MfG

Verfasst: 8. Juni 2006 08:15
von joschika77
Ahh ih weiß wie du meinst, habe aber die Oberfläche mit dem UI Designer erstellt.Kann dort den Item nichts übergeben. Muß ich die Items dann manuell eintragen?

MfG

Verfasst: 8. Juni 2006 08:40
von macman
Ja, wirst Du wohl. Irgendwo sind dem Designer auch Grenzen gesetzt. Du kannst den Kram ja aus der ui_dialog.h kopieren, in den Konstruktor hinter das setupUi() packen und anpassen.

Verfasst: 8. Juni 2006 08:53
von joschika77
Jo hab ich schon gemacht.Klappt jetzt.Sehr schön.Danke Dir.
Wie du geschrieben hast, erst den Typ im Konstruktor mitübergeben und dann mit item->type() wieder auslesen.Wen es interessiert.

MfG