Seite 1 von 1
Funktion für selektierte QListWidgetItems anzeigen
Verfasst: 16. März 2009 18:28
von Exasperation
Hallo zusammen!
Also mein Problem sieht folgendermaßen aus: Ich habe eine QList, wenn man ein Item anklickt wird mittels connect eine Funktion aufgerufen... nun ist es mein Ziel, dass die Funktion für jedes SELEKTIERTE Item aufgerufen wird... Also um konkret zu werden: Die Items sind Bearbeitungspfade die in einem GL Widget angezeigt werden. Im Moemnt schaffe ich es nur, dass immer ein 3D Pfad angezeigt wird, ich möchte aber, dass alle selektierten Items/Pfade, im GL Widget angezeigt werden. Kann mir da jemand weiterhelfen?
Code: Alles auswählen
connect( m_path_list, SIGNAL(itemClicked( QListWidgetItem* )), this, SLOT(on_path_list_itemClicked( QListWidgetItem* )) );
Verfasst: 16. März 2009 18:38
von CLRS530
Lass dir von diesem Slot dann mittels
http://doc.trolltech.com/4.5/qlistwidge ... ectedItems alle Items liefern.
Verfasst: 16. März 2009 18:40
von Exasperation
Das hab ich auch schon gesehn, wusste aber nicht wie ich das dazu einsetzen kann.. Vielen Dank shconmal, werds versuchen und mich dann melden ob es klappt..

Verfasst: 16. März 2009 18:41
von CLRS530
Dann wäre aber auch empfehlenswert stattdessen
http://doc.trolltech.com/4.5/qlistwidge ... ionChanged zu nutzen. Dann brauchst du auch nur ein connect.
Dein gewähltest sagt auch kein Stück aus, ob es selektiert wurde oder de-selektiert.
Verfasst: 17. März 2009 10:43
von Exasperation
Ich komm da irgendwie nicht dahinter...
Meine Konstruktion sieht bisher wie folgt aus:
Code: Alles auswählen
connect( m_path_list, SIGNAL(itemSelectionChanged()), this, SLOT( multi_selection( QList<QListWidgetItem *> ) ) );
Die Funktion multi_selection habe ich folgendermaßen definiert:
Code: Alles auswählen
void main_window::multi_selection( QList<QListWidgetItem *> my_items )
{
int item_count = my_items.size();
for( int i = 0; i <= item_count; ++i )
{
on_path_list_itemClicked( my_items.at(i) );
}
}
Das funktioniert aber bisher leider nicht... Kompiliert wird es, aber bei selektieren der verschiedenen Items passiert nichts...
Verfasst: 17. März 2009 10:55
von pfid
Im connect() müssen Signal UND Slot die gleichen Parameter haben. D.h. dein Slot muss
heißen.
IN diesem Slot kannst du dann die Liste der selektierten Items per QListWidget::selectedItems() holen (= eine QList<QListWidgetItem*>).
[edit] deine for-Schleife geht auch bisschen einfacher:
Code: Alles auswählen
foreach (QListWidgetItem* item, listWidget->selectedItems())
doSomethingWith(item);
Verfasst: 17. März 2009 11:01
von Exasperation
Jap genau das is mir auch eingefallen

So langsam sieht es gut aus
Code: Alles auswählen
connect( m_path_list, SIGNAL(itemSelectionChanged()), this, SLOT( on_selection_change() ) );
Code: Alles auswählen
void main_window::on_selection_change()
{
multi_selection( m_path_list->selectedItems() );
}
void main_window::multi_selection( QList<QListWidgetItem *> p_items )
{
int item_count = p_items.size();
for( int i = 0; i <= item_count-1; i++ )
{
on_path_list_itemClicked( p_items.at(i) );
}
}
(Ja, aus den zwei Funktionen werd ich noch eine machen)