Dobry wieczór.
Od wczoraj męczę się z takim pomysłem: Mam w oknie programu obiekt typu QTableWidget. Do tego obiektu wczytuję sobie dane w postaci obiektów QTableWidgetItem.
Obiekt QTableWidget posiada na starcie programu pięć predefiniowanych kolumn oraz zero rzędów. Rzędy pojawiają się kiedy użytkownik użyje opcji wyszukiwania i coś znajdzie (nie ważne co, jakieś dane po prostu).
To wszystko bardzo ładnie działa, ponieważ obiekty typu QTableWidgetItem zawierają dane tekstowe, z którymi nic się nie robi tylko czyta z ekranu.
Ja chciałbym do rzędów, które się pojawią wczytać przyciski, tak żeby wyglądało to następująco:
// Pionowe kreski reprezentują kolumny tabeli
Dane | Dane | Dane | Przycisk | Przycisk // rząd nr 1
...
Dane | Dane | Dane | Przycisk | Przycisk // rząd nr 'n'
// gdzie 'n' to liczba znalezionych przez użytkownika rzędów
// wg jakichś tam kryteriów.
Jak to zrobić w kodzie to wiem, bo robię sobie odpowiednio dużą dynamiczną tablicę obiektów klasy QPushButton i wklejam jej elementy do tabeli na zasadzie:
this->ui->twWyniki->setCellWidget(0,4,&pb[0]);
// gdzie obiekt pb[0] to obiekt typu QPushButton, a
// twWyniki to obiekt klasy QTableWidget.
// powoduje to wczytanie do rzędu nr '0', w kolumnie nr '5' przycisku nr [0] z ww tablicy.
Pytanie:
Jak napisać do tego sloty kiedy nie wiem jak duża będzie tak naprawdę tablica przycisków? Chcę żeby te przyciski wyświetlały nowe okno z rysunkiem pobranym z pliku jpg z dysku. Jak zaprogramować sloty do tego skoro liczba przycisków jest zmienna i zależy od ilości rzędów w tabeli wyszukiwania?
Pozdrawiam
Grzegorz
[EDIT]
Zapomniałem dopisać, że działa coś takiego:
for(int i = 0; i < 3; i++) // dla trzech przycisków
connect(&pb[i],SIGNAL(clicked()),pb,SLOT(hide())); // przykładowy slot 'hide()'
tylko teraz chodzi o to, że chcę pojedynczy slot do każdego przycisku, który to slot będzie miał argument, będący ścieżką do jpg na dysku.
Jeżeli każdy przycisk otwiera plik o innej nazwie to musiałbym mieć i-tą ilość takich slotów - tutaj jest pies pogrzebany, bo nie ma sygnału typu clicked(QString tekst).
Pozwalałoby mi to na zdefiniowanie jednego slotu, gdzie ścieżka byłaby przekazywana przez tego stringa.