QDBusAbstractInterface Class
QDBusAbstractInterface クラスは、Qt D-Bus バインディングのすべての D-Bus インターフェースの基底クラスで、リモート・インターフェースへのアクセスを可能にします。詳細...
Header: | #include <QDBusAbstractInterface> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
qmake: | QT += dbus |
Inherits: | QObject |
Inherited By: |
パブリック関数
virtual | ~QDBusAbstractInterface() |
QDBusPendingCall | asyncCall(const QString &method, Args &&... args) |
QDBusPendingCall | asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args) |
QDBusMessage | call(const QString &method, Args &&... args) |
QDBusMessage | call(QDBus::CallMode mode, const QString &method, Args &&... args) |
QDBusMessage | callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args) |
bool | callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod) |
bool | callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *slot) |
QDBusConnection | connection() const |
QString | interface() const |
(since 6.7) bool | isInteractiveAuthorizationAllowed() const |
bool | isValid() const |
QDBusError | lastError() const |
QString | path() const |
QString | service() const |
(since 6.7) void | setInteractiveAuthorizationAllowed(bool enable) |
void | setTimeout(int timeout) |
int | timeout() const |
詳細説明
生成コード・クラスも QDBusAbstractInterface から派生するため、ここで説明するすべてのメソッドは生成コード・クラスでも有効です。ここで説明するものに加えて、生成コード・クラスはリモート・メソッド用のメンバ関数を提供し、正しいパラメータと戻り値のコンパイル時チェック、およびプロパティ型マッチングとシグナル・パラメータ・マッチングを可能にします。
QDBusコンパイラと QDBusInterfaceも参照してください 。
メンバ関数 ドキュメント
[virtual noexcept]
QDBusAbstractInterface::~QDBusAbstractInterface()
このオブジェクトのリソースを解放します。
template <typename... Args> QDBusPendingCall QDBusAbstractInterface::asyncCall(const QString &method, Args &&... args)
このインターフェースのメソッドmethod を呼び出し、args をメソッドに渡します。すべてのargs はQVariant に変換可能でなければならない。
call
へのパラメータは、入力引数として D-Bus 経由でリモート関数に渡されます。返されたQDBusPendingCall オブジェクトは、返答に関する情報を調べるために使用することができる。
次のように使用できます:
QDBusPendingCall pcall = interface->asyncCall("GetAPIVersion"_L1); auto watcher = new QDBusPendingCallWatcher(pcall, this); QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [&](QDBusPendingCallWatcher *w) { QString value = retrieveValue(); QDBusPendingReply<int> reply(*w); QDBusPendingCall pcall; if (reply.argumentAt<0>() >= 14) pcall = interface->asyncCall("ProcessWorkUnicode"_L1, value); else pcall = interface->asyncCall("ProcessWork"_L1, "UTF-8"_L1, value.toUtf8()); w = new QDBusPendingCallWatcher(pcall); QObject::connect(w, &QDBusPendingCallWatcher::finished, this, &Abstract_DBus_Interface::callFinishedSlot); });
この例では、0、1、2個のパラメータを持つ関数の呼び出しと、それぞれに渡されるパラメータ・タイプの違いを示しています("ProcessWorkUnicode"
への最初の呼び出しには1つのUnicode文字列が含まれ、"ProcessWork"
への2番目の呼び出しには1つの文字列と1つのバイト配列が含まれます)。ブロッキング(同期)呼び出しでの同じ例はcall() を参照してください。
注意: Qt 5.14以前では、この関数は最大8つの引数しか受け付けませんでした。
注: ローカルQDBusServer
'へのメソッド呼び出しは、実装上の制限により、決して非同期ではありません。
asyncCallWithArgumentList()も参照してください 。
QDBusPendingCall QDBusAbstractInterface::asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args)
args を引数として、method で指定されたリモート・メソッドの呼び出しをこのインターフェイスに配置する。この関数はQDBusPendingCall オブジェクトを返します。このオブジェクトは、応答のステータスを追跡したり、応答が到着したらその内容にアクセスしたりするために使用できます。
通常、呼び出しはasyncCall() を使って行う。
注: アプリケーション自身が登録したオブジェクトに対するメソッド呼び出しは、実装上の制限により、決して非同期ではありません。
注意:この関数はスレッドセーフです。
template <typename... Args> QDBusMessage QDBusAbstractInterface::call(const QString &method, Args &&... args)
このインターフェイスのメソッドmethod を呼び出し、args をメソッドに渡します。すべてのargs はQVariant に変換可能でなければならない。
call
へのパラメータは、入力引数として D-Bus 経由でリモート関数に渡される。出力引数はQDBusMessage リプライで返される。リプライがエラー・リプライの場合、lastError() にもエラー・メッセージの内容が設定される。
次のような使い方ができる:
QString value = retrieveValue(); QDBusMessage reply; QDBusReply<int> api = interface->call("GetAPIVersion"_L1); if (api >= 14) reply = interface->call("ProcessWorkUnicode"_L1, value); else reply = interface->call("ProcessWork"_L1, "UTF-8"_L1, value.toUtf8());
この例では、0個、1個、2個のパラメータを持つ関数の呼び出しと、それぞれに渡される異なるパラメータ・タイプを示しています("ProcessWorkUnicode"
への最初の呼び出しには1つのUnicode文字列が含まれ、"ProcessWork"
への2番目の呼び出しには1つの文字列と1つのバイト配列が含まれます)。ノンブロッキング(非同期)呼び出しでの同じ例はasyncCall() を参照してください。
注意: Qt 5.14以前では、この関数は最大8つの引数しか受け付けませんでした。
callWithArgumentList()も参照してください 。
template <typename... Args> QDBusMessage QDBusAbstractInterface::call(QDBus::CallMode mode, const QString &method, Args &&... args)
これはオーバーロードされた関数です。
このインターフェイスのメソッドmethod を呼び出し、args をメソッドに渡します。すべてのargs はQVariant に変換可能でなければならない。
mode がNoWaitForReply
の場合、この関数は、リモート・メソッドからの応答を待たずに、呼び出し後すぐに戻る。そうでない場合、mode は、この関数が応答の到着を待つ間、Qt イベントループをアクティブにするかどうかを示します。
この関数が応答を待つためにQtイベントループに再び入る場合、ユーザー入力は除外されます。待ち時間の間、シグナルや他のメソッド呼び出しがアプリケーションに送られるかもしれません。そのため、call()で呼び出されるたびに、再入力に対応できるようにしておく必要があります。
注意: Qt 5.14以前では、この関数は最大8つの引数しか受け付けませんでした。
callWithArgumentList()も参照してください 。
QDBusMessage QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args)
args を引数として、method で指定されたリモート・メソッドの呼び出しをこのインターフェイスに配置します。この関数は、応答として受信したメッセージを返す。このメッセージは、通常のQDBusMessage::ReplyMessage (成 功を示す)またはQDBusMessage::ErrorMessage (呼び出しに失敗した場合)である。mode パラメータは、この呼をどのように配置するかを指定する。
呼び出しが成功した場合、lastError ()はクリアされる。そうでない場合、この呼び出しが生成したエラーが格納される。
通常は、call ()を使用して呼び出しを行う。
警告: UseEventLoop
この関数が返される前に、他のメソッド呼び出しやシグナルが送られるかもしれませんし、他のQtキューに入れられたシグナルやイベントが送られるかもしれません。
注意:この関数はスレッドセーフです。
bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod)
args を引数として、method で指定されたリモートメソッドの呼び出しをこのインターフェイスに配置します。この関数は、呼び出しをキューに入れた直後に戻ります。リモート関数からの返事は、オブジェクトreceiver 上のreturnMethod に送られる。エラーが発生した場合、代わりにオブジェクトreceiver 上のerrorMethod が呼び出される。
この関数は、キューイングが成功した場合、true
を返す。これは、実行された呼び出しが成功したことを示すものではない。失敗した場合、errorMethod が呼び出される。キューイングに失敗した場合、この関数はfalse
を返し、スロットは呼び出されない。
returnMethod は、関数呼び出しによって返された型をパラメータとして持たなければならない。オプションとして、最後のパラメータまたは唯一のパラメータとしてQDBusMessage を持つことができる。errorMethod は、唯一のパラメータとしてQDBusError を持たなければならない。
注: アプリケーション自身が登録したオブジェクトに対するメソッド呼び出しは、実装上の制限により、決して非同期にはならない。
QDBusError およびQDBusMessageも参照のこと 。
bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *slot)
これはオーバーロードされた関数です。
この関数は非推奨です。オーバーロードされたバージョンを使用してください。
args を引数として、method で指定されたリモートメソッドの呼び出しをこのインターフェイスに配置します。この関数は、呼び出しをキューに入れた直後に戻ります。リモート関数からの返答や、その関数が発したエラーは、オブジェクトreceiver のslot スロットに配送されます。
この関数は、キューイングが成功した場合、true
を返す。これは、呼び出しが成功したことを示すものではない。失敗した場合、エラーメッセージとともにスロットが呼び出される。lastErrorそのような状況では、()は設定されません。
QDBusError およびQDBusMessageも参照のこと 。
QDBusConnection QDBusAbstractInterface::connection() const
このインターフェースが関連付けられている接続を返します。
QString QDBusAbstractInterface::interface() const
このインターフェイスの名前を返します。
[since 6.7]
bool QDBusAbstractInterface::isInteractiveAuthorizationAllowed() const
非同期呼び出しの場合、呼び出し元が対話的承認を待つ用意があるかどうかを返します。
デフォルトはfalse
です。
この関数は Qt 6.7 で導入されました。
setInteractiveAuthorizationAllowed() およびQDBusMessage::setInteractiveAuthorizationAllowed()も参照してください 。
bool QDBusAbstractInterface::isValid() const
リモート・オブジェクトへの有効な参照である場合はtrue
を返します。このインタフェースの作成時にエラーがあった場合(例えば、リモート・アプリケーションが存在しない場合)にはfalse
を返します。
注意:リモート・オブジェクトを扱う場合、QDBusInterface を作成するときに、それが存在するかどうかを判断できるとは限りません。
QDBusError QDBusAbstractInterface::lastError() const
最後の操作で発生したエラーを返します。最後の操作でエラーが発生しなかった場合は、無効なエラーを返します。
QString QDBusAbstractInterface::path() const
このインターフェースが関連付けられているオブジェクトパスを返します。
QString QDBusAbstractInterface::service() const
このインターフェースが関連付けられているサービス名を返します。
[since 6.7]
void QDBusAbstractInterface::setInteractiveAuthorizationAllowed(bool enable)
非同期呼び出しの場合、呼び出し元が対話的認可を待つ用意があるかどうかを設定する。
enable がtrue
に設定されている場合、このインターフェイスを介した非同期呼の ために生成されるD-Busメッセージは、ALLOW_INTERACTIVE_AUTHORIZATION
フラグを設定する。
このフラグは、非特権コードがより特権の高いメソッド呼び出しを呼び出すとき にのみ有効であり、対話的な認可を可能にする認可フレームワークが導入されて いる。
デフォルトはfalse
です。
この関数は Qt 6.7 で導入されました。
isInteractiveAuthorizationAllowed() およびQDBusMessage::setInteractiveAuthorizationAllowed()も参照してください 。
void QDBusAbstractInterface::setTimeout(int timeout)
今後のすべての DBus 呼び出しのタイムアウトをミリ秒単位でtimeout に設定します。 -1 はデフォルトの DBus タイムアウト(通常は 25 秒)を意味します。
timeout()も参照してください 。
int QDBusAbstractInterface::timeout() const
タイムアウトの現在値をミリ秒単位で返します。-1 はデフォルトの DBus タイムアウト (通常は 25 秒) を意味します。
setTimeout() も参照して ください。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。