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 *)))
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
Jak radzisz sobie z sygnałem 'itemClicked'? Niektóre kod byłyby pomocne – pnezis
zobacz mój zredagowany wpis powyżej. – user662285