[C++/Qt4]pomimo braku poł. ze slotem funkcja jest wykonywana


(Spwmarluk) #1

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?

Kiedyś musiała istnieć linia connect...


(Wojtekbogocki) #2

A nie podasz kodu? :wink: Bo tak to ciężko ci coś poradzić, sam korzystałem z Qt 4.7 i nie było problemów.


(Spwmarluk) #3

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.


(Arkadiusz Adamski) #4

hmm.. spróbuj może usunąć wszystkie plik moc_* i skompiluj jeszcze raz..