Wie sende ich Signale in einer anderen Klasse in Qt?

7

Wir können Signale in der Klasse, die die Signale definiert, einfach durch emit signal_a() like

ausgeben %Vor%

Allerdings, wie Signale in einer anderen Klasse in Qt emittieren? Zum Beispiel

%Vor%     
user1899020 20.09.2013, 13:22
quelle

3 Antworten

8

In Qt5 können Sie einfach

tun %Vor%

emit ist ein leeres Makro und Signale werden öffentlich gesetzt (das Schlüsselwort signals ist ein Makro, das public wird)

    
ratchet freak 20.09.2013, 13:25
quelle
11

Sie können keine Signale direkt aussenden, da Signale geschützte Methoden sind (in Qt4). Es gibt mehrere Möglichkeiten, das zu tun, was Sie wollen:

  1. Erstellen Sie eine öffentliche Methode in Klasse A, die die notwendigen Signale ausgibt
  2. erzeugt das Signal in der Klasse B und verbindet es mit einem Signal in der Klasse A

Sie sollten nicht vergessen, dass Klassen mit Signalen QObject einschließen müssen und das Makro Q_OBJECT enthalten.

    
Dmitry Sazonov 20.09.2013 13:40
quelle
4

Qt-Signale sind normale Methoden. Das Schlüsselwort "emit" wird auf eine leere Zeichenfolge erweitert. Rufen Sie einfach a.signal_a ();

auf     
Johny 20.09.2013 13:25
quelle

Tags und Links