このページでは

QDBusAbstractInterface Class

QDBusAbstractInterface クラスは、Qt D-Bus バインディングにおけるすべての D-Bus インターフェースの基底クラスであり、リモートインターフェースへのアクセスを可能にします。詳細...

ヘッダー: #include <QDBusAbstractInterface>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus
継承元: QObject
継承元:

QDBusConnectionInterface およびQDBusInterface

パブリック関数

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)

このインターフェースのmethod で指定されたリモートメソッドに対し、args を引数として呼び出しを行います。この関数は、応答のステータスを追跡し、応答が到着した後にその内容にアクセスするために使用できる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)

このインターフェースのmethod で指定されたリモートメソッドに対し、args を引数として呼び出しを行います。この関数は、応答として受け取ったメッセージを返します。このメッセージは、通常の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)

このインターフェースのmethod で指定されたリモートメソッドに対し、引数としてargs を使用して呼び出しをキューイングします。この関数は、呼び出しをキューに追加した後、直ちに返ります。リモート関数からの応答は、オブジェクト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)

この関数は非推奨です。オーバーロードされたバージョンを使用してください。

このインターフェースのmethod で指定されたリモートメソッドに対し、引数としてargs を使用して呼び出しをキューに入れます。この関数は、呼び出しをキューに入れた直後に戻ります。リモート関数からの応答、またはそれによって発生したエラーは、オブジェクト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()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.