tutorial signal custom and c++ qt signals-slots

c++ - custom - qt signals and slots tutorial



Qt "tragamonedas privadas:" ¿qué es esto? (3)

Declarar espacios como privados significa que no podrá hacer referencia a ellos desde el contexto en el que son privados, como cualquier otro método. En consecuencia, no podrá pasar la dirección de las máquinas tragamonedas privadas para connect .

Si declaras que la señal y la ranura son privadas, estás diciendo que solo esta clase puede administrar, pero los punteros de los miembros de la función no tienen restricciones de acceso :

class A{ private: void e(){ } public: auto getPointer(){ return &A::e; } }; int main() { A a; auto P=a.getPointer(); (a.*P)(); }

Aparte de eso, lo que otras respuestas mencionan es válido también:
- todavía puedes conectar señales privadas y tragamonedas desde el exterior con trucos
- las signals y las slots son macros vacías y no rompen el estándar del lenguaje

Entiendo cómo usarlo, pero la sintaxis me molesta. ¿Qué está haciendo "slots privados"?

Nunca he visto algo entre la palabra clave privada y el: en una definición de clase anterior. ¿Hay alguna magistral magia C ++ aquí?

Y ejemplo aquí:

#include <QObject> class Counter : public QObject { Q_OBJECT public: Counter() { m_value = 0; } int value() const { return m_value; } public slots: void setValue(int value); ...


Las máquinas tragamonedas son una extensión específica de Qt de C ++. Solo se compila después de enviar el código a través del preprocesador de Qt, el Meta-Object Compiler (moc). Ver http://doc.qt.io/qt-5/moc.html para documentación.

Editar: Como señala Frank, el moc solo es necesario para enlazar. Las palabras clave adicionales se definen # con el preprocesador estándar.


Las palabras clave como public , private se ignoran para las ranuras Qt. Todas las máquinas tragamonedas son en realidad públicas y se pueden conectar