このチュートリアルから、私は見つけました
class Chat : public QObject
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "demo.Chat")
Q_PROPERTY( QStringList users READ users)
signals:
void userAdded(const QString& user);
void userRemoved(const QString& user);
void messageSent(const Message &message);
public slots:
void addUser(const QString &user);
void removeUser(const QString &user);
void sendMessage(const Message &message);
public:
Chat(QObject* parent = 0);
virtual ~Chat();
QStringList users() const;
private:
QStringList m_users;
};
生成することができます
......
<signal name="userRemoved">
<arg name="user" type="s" direction="out"/>
</signal>
<method name="addUser">
<arg name="user" type="s" direction="in"/>
</method>
......
ここで「out」と「in」はどういう意味ですか?
メソッドとシグナル
各オブジェクトにはメンバーがあります。メンバーには、メソッドとシグナルの2種類があります。メソッドは、オプションの入力(別名引数または「入力パラメーター」)および出力(別名戻り値または「出力パラメーター」)を使用して、オブジェクトに対して呼び出すことができる操作です。信号は、オブジェクトからオブジェクトの関心のあるオブザーバーにブロードキャストされます。信号にはデータペイロードが含まれる場合があります。
[...]メソッドへの引数は、「in」(METHOD_CALLで送信されることを意味します)または「out」(METHOD_RETURNで返されることを意味します)と呼ばれることがよくあります。
<arg>のdirection要素は省略できます。その場合、デフォルトでメソッド呼び出しの場合は「in」、シグナルの場合は「out」になります。信号は「出力」のみを許可するため、方向を指定することはできますが、意味がありません。
方向プロパティは、引数が関数の入力であるか、呼び出し元に返される出力であるかを示します。シグナルの場合、outパラメーターのみが許可されます。関数には複数のout
パラメーターがある場合があります。例については、こちらをご覧ください。
特定のケースでuserRemoved
は、はD-Busを介して新しいユーザーを送信する信号であるため、user
引数は外向きの値です。addUser
ただし、これはD-Busを介して呼び出されuser
、その入力となる関数です。これは、このオブジェクトから送信されるのではなく、D-Busを介して到着する内向きの値です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加