1. ホーム
  2. c++

[解決済み] Qt "private slots:" これは何ですか?

2023-04-17 23:28:11

質問

使い方はわかるのですが、構文が気になります。private slots:"は何をしているのでしょうか?

クラス定義で private キーワードと : の間に何かがあるのを見たことがありません。何か派手な C++ マジックがあるのでしょうか?

そして、ここに例があります。

 #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);

 ...

どのように解決するのですか?

スロットはC++のQt固有の拡張です。Qt のプリプロセッサである Meta-Object Compiler (moc) を通してコードを送った後、初めてコンパイルされます。以下を参照してください。 http://doc.qt.io/qt-5/moc.html を参照してください。

編集:Frankが指摘するように、mocはリンクのためにのみ必要です。余分なキーワードは標準のプリプロセッサで #defined away です。