Qt-Signale und Slots: Berechtigungen

Es gibt Diskrepanzen zwischen den respektierten Antworten hier auf SO und den tatsächlichen Qt-Dokumenten.

Ich habe gelesendiese Frage und ich möchte eine weitere Klarstellung. Kann jemand bestätigen:

Ein Signal ist immerprotectedDaher kann es nur von der Klasse oder einer ihrer Unterklassen ausgegeben werden. Ich bin mir nicht sicher, ob das stimmt. Die Frage oben zeigt Antworten, die diese Aussage stützen. Aber dieQt docs sagen:Signals are public access functions and can be emitted from anywhere, but we recommend to only emit them from the class that defines the signal and its subclasses. Also was ist es?Slots sind nur Funktionen und können daher öffentlich, privat oder geschützt sein. Offensichtlich eine Fremdklassewerden Sie können steuern, ob Ihre Klasse eines ihrer eigenen Signale mit einem ihrer eigenen Slots verbindet, wenn der Slot öffentlich ist. Die SO-Informationen unterscheiden sich jedoch wiederum von den Dokumenten, in denen Folgendes angegeben ist:a signal emitted from an instance of an arbitrary class can cause a private slot to be invoked in an instance of an unrelated class. Das bedeutet, dassprivate wird vom Signal / Slot-Mechanismus nicht beachtet?Die Wörter "öffentlich", "privat", "geschützt" haben keine Verwendung für die Arbeit mit demsignal StichwortDas ausgesendete Signal istimmer Für alle anderen Klassen verfügbar, dh, jede andere Klasse kann immer eine Verbindung zu diesem Signal herstellen (unabhängig von der Erlaubnis, das Signal auszugeben).Obwohl alle Signale für alle Klassen sichtbar sind, können Sie immer noch zwei Klassen mit Signalen mit demselben Namen haben, seit demconnect Die Funktion verwendet den Klassennamen als Signalpräfix (d. h.SomeClass::itsSignal)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage