Po przeniesieniu projektu z Qt 4.6 do 4.7 postanowiłem poprawić nazewnictwo slotów tak aby działał szybki dostęp do nich z poziomu Qt Creatora. Niestety po tych poprawkach np. po wywołaniu sygnału clicked(), funkcja skojarzona z danym przyciskiem wykonywana jest dwukrotnie. Nawet po usunięciu skojarzenia z poziomu Qt Creatora nadal funkcja jest wykonywana, tylko tym razem jednokrotnie.
Na jakiej podstawie Qt 4.7 łączy sygnał ze slotem?
Wygląda na to, że problem jakby się rozwiązał. Nie mam teraz czasu przebijać się przez dokumentację, ale może gdzieś jest wspomniane o następującej sytuacji:
Jeśli slot do sygnału clicked() wysyłanego przez obiekt ‘xxx’ będzie mieć nazwę on_xxx_clicked() (domyślnie tworzonego przez PPM->Go to slot->… itd.) to z automatu zostanie podłączony i będzie działać. Niestety nie będzie widoczny z poziomu edytora sygnałów (“F4”). Jeśli jednak podłączymy go “dodatkowo” poprzez ten edytor to będzie widoczny, ale funkcja będzie się wykonywać 2 razy. Można zmienić oczywiście nazwę slotu na jakąś inną, ale tracimy wtedy możliwość dostępu z poziomu “go to slot”.
Ja jednak zostanę przy pierwszej opcji i odpuszczę sobie edytor, bo przy większej liczbie połączeń i tak jest nieczytelny, a funkcjonalność “go to slot” jest wygodna w użyciu.
Kod oczywiście mogę podać jeśli ktoś jest zainteresowany.