2017-03-14 8 views
1

私はrvizのソースコードを読んでいます。私は保護された後にマクロQ_SLOTSを見つけました。私はここでその意味をよく分かりません。 (私は、クラスメンバーの「証明された」意味へのアクセス制限を理解しています)。クラスアクセス制限後のQTマクロQ_SLOTS

class _RosTopicDisplay: public Display 
     { 
         Q_OBJECT 
       public: 
         _RosTopicDisplay() 
         { 
           topic_property_ = new RosTopicProperty("Topic", "", 
                     "", "", 
                     this, SLOT(updateTopic())); 
           unreliable_property_ = new BoolProperty("Unreliable", false, 
                     "Prefer UDP topic transport", 
                     this, 
                     SLOT(updateTopic())); 
         } 

       protected Q_SLOTS: 
         virtual void updateTopic() = 0; 

       protected: 
         RosTopicProperty* topic_property_; 
         BoolProperty* unreliable_property_; 
     }; 

誰でも私のために説明することができますplz。

答えて

1

Q_SLOTS

使用クラス宣言内のスロットのキーワードを置き換えるために、このマクロ、 あなたはサードパーティのシグナル/スロットで メカニズムをQtのシグナルとスロットを使用します。

マクロno_keywordsが.PROファイルの CONFIG変数で指定された場合、通常使用されるが、 no_keywordsが指定されていない場合でも使用することができます。

基本的にはslotsのより安全なバージョンで、他のライブラリで使用される可能性が高い識別子です。スロットでもサポートされているアクセス指定子については、IIRCが制限されたアクセスをバイパスし、メタシステムを通じてそのようなスロットを呼び出すことができる点を除いて、通常の方法と同じ規則が適用されます。