2009-09-07 9 views
21

Mam swoją klasę X, która dziedziczy po klasie Qt Base. Ogłosiłem i zdefiniowałem gniazdo void mySlot() w mojej klasie X i podłączam sygnał do tego slotu w konstruktorze X. Jednak po uruchomieniu programu pojawia się komunikat o błędzie informujący, że nie ma takiego gniazda, jak void mySlot() w klasie Base.Dlaczego Qt szuka mojego gniazda w klasie bazowej, a nie pochodnej?

Dlaczego kod generowany przez Meta Object Compiler (moc) szuka mojego gniazda w klasie bazowej, a nie w mojej klasie (pochodnej)?

Odpowiedz

45

Czy dodałeś makro Q_OBJECT do klasy pochodnej?

6

Od #qt kanale IRC

  1. upewnić, makro Q_OBJECT występuje w definicji wszystkich klas QObject-pochodnych.
  2. Upewnij się, że klasy pochodne QObject są zadeklarowane TYLKO w plikach nagłówkowych.
  3. Upewnij się, że wszystkie pliki nagłówkowe są wymienione w pliku .pro na liście HEADERS =.
  4. Wykonaj polecenie qmake za każdym razem, gdy dodasz Q_OBJECT do jednej z klas lub zmodyfikuj plik .pro.
Powiązane problemy