2010-02-08 18 views
5

Załóżmy, że mam widget QPushButton, który jest podłączony do gniazda za pomocą jego sygnału clicked(). Ten pierwszy automat z kolei wywołuje inne gniazdo przez słowo kluczowe emit. Drugi automat bierze argument z pierwszego automatu i coś z nim robi. Zadziałało, ale z tego, co rozumiem, schematu sygnałów-gniazd, sensowne wydaje się tylko wysyłanie sygnału. Czy błędem jest emitowanie slotu zamiast sygnału?Qt - emitujące gniazda zamiast sygnałów

Odpowiedz

8

Jeśli przyjrzeć się definicji emisji, widać, że jest pusta. emit jest używany tylko do wskazania, że ​​sygnał jest emitowany na tej linii. Dlatego emitowanie gniazda nie ma sensu.

Automaty są zwykłymi funkcjami, można je wywoływać jawnie.

5

Tak. Slot jest funkcją. Możesz po prostu wywołać slot jak każdą inną funkcję w C++ doSlotAction(params);. Tylko sygnały powinny być zgodne ze słowem kluczowym emit.

+0

To przekazuje niewłaściwe znaczenie. Emitowanie przekazuje w rzeczywistości znaczenie wysyłania sygnału i wywoływanego podłączonego gniazda, gdzie słowo _keyword_ nie emituje nic, to tylko dla lepszej czytelności. – drahnr

3

Tylko w celu uzupełnienia poprzednich odpowiedzi sygnały są naprawdę chronionymi metodami implementowanymi przez moc, kompilator meta-obiektu.

Powiązane problemy