2011-11-08 11 views
7

Jak dodać 2 obrazy i tekst w QListWidget w czasie wykonywania w Qt? Chcę umieścić jeden obraz na początku listy i jeden na końcu, a tekst powinien pojawić się wkrótce po pierwszym obrazie.QListWidget Dodaj niestandardowe elementy w Qt?

itemclicked wydarzenie

connect(list, SIGNAL(itemClicked()), this, SLOT(clicked(QListWidgetItem *))); 
void MyWidget::clicked(QListWidgetItem *item) 
{ 
    //code 

} 

Odpowiedz

10

Zapraszamy do obejrzenia funkcji setItemWidget. Możesz zaprojektować widget (nazywając go: MyListItemWidget) zawierający dwie etykiety ikon i etykietę tekstową, a w jego konstruktorze podać dwie ikony i tekst. Następnie możesz dodać go do swojej QListWidget. Przykładowy kod w następujący sposób:

QIcon icon1, icon2; // Load them 
MyListItemWidget *myListItem = new MyListItemWidget(icon1, icon2, "Text between icons"); 
QListWidgetItem *item = new QListWidgetItem(); 
ui->listWidget->addItem(item); 
ui->listWidget->setItemWidget(item, myListItem); 

Należy również przyjrzeć QListView i QItemDelegate który jest najlepszym rozwiązaniem do projektowania i wyświetlania elementów listy niestandardowej.

EDIT DOTYCZĄCA połączeniem

Podłączając sygnał do gniazda ich podpis powinien pasować. Oznacza to, że slot nie może mieć więcej parametrów niż sygnał. Z signals-slots documentation

Mechanizm mechanizm sygnałów i slotów jest typu bezpieczne: Podpis sygnału musi pasować do podpisu swoim gnieździe. (W rzeczywistości slot mogą mieć krótszy niż podpis sygnału otrzymywanych ponieważ może ignorować dodatkowe argumenty.)

Oznacza to, że sygnał musi mieć QListWidgetItem * argument w związku.

connect(list, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(clicked(QListWidgetItem *))) 
+0

Zastosowałem to samo podejście, co sugerowane przez ciebie, które działa dobrze, ale po tym, kiedy używam itemclicked zdarzenia na liście, zostaje ono uruchomione na podwójne kliknięcie, powinno działać na pojedynczym kliknięciu. – user662285

+0

Jak radzisz sobie z sygnałem 'itemClicked'? Niektóre kod byłyby pomocne – pnezis

+0

zobacz mój zredagowany wpis powyżej. – user662285

Powiązane problemy