QDBusContext Class
QDBusContextクラスは、スロットが呼び出しのD-Busコンテキストを決定することを可能にします。詳細...
ヘッダー | #include <QDBusContext> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
qmake: | QT += dbus |
パブリック関数
QDBusContext() | |
~QDBusContext() | |
bool | calledFromDBus() const |
QDBusConnection | connection() const |
bool | isDelayedReply() const |
const QDBusMessage & | message() const |
void | sendErrorReply(const QString &name, const QString &msg = QString()) const |
void | sendErrorReply(QDBusError::ErrorType type, const QString &msg = QString()) const |
void | setDelayedReply(bool enable) const |
詳細説明
あるスロットがオブジェクトの中でシグナル配信やリモートメソッド呼び出しによって呼び出されたとき、そのときのコンテキストを知る必要があることがあります。特に、スロットが後でリプライを送信したいと判断した場合、またはエラーでリプライしたい場合、コンテキストが必要になります。
QDBusContextクラスは、Qt D-Bus XMLコンパイラ(qdbusxml2cpp)が生成するコードを変更することなく、コンテキストにアクセスするための代替手段です。
QDBusContext は、QDBusConnection::registerObject() を使用してエクスポートされるオブジェクトからサブクラス化して使用します。次の例は、その使用方法を示しています:
class MyObject: public QObject, protected QDBusContext { Q_OBJECT QDBusConnection conn; QDBusMessage msg; //... protected slots: void process(); public slots: void methodWithError(); QString methodWithDelayedReply(); }; void MyObject::methodWithError() { sendErrorReply(QDBusError::NotSupported, "The method call 'methodWithError()' is not supported"); } QString MyObject::methodWithDelayedReply() { conn = connection(); msg = message(); setDelayedReply(true); QMetaObject::invokeMethod(this, &MyObject::process, Qt::QueuedConnection); return QString(); }
この例では、エラー・リプライの送信と遅延リプライの送信という2つの典型的な使用方法を示しています。
注意:QDBusContext とQDBusAbstractAdaptor を同時にサブクラス化しないでください。QDBusContextは、アダプタではなく、実際のオブジェクトの中に現れるべきです。アダプタ・コードからコンテキストを決定する必要がある場合は、public 継承を使用し、QObject::parent() 経由で関数にアクセスしてください。
メンバ関数ドキュメント
QDBusContext::QDBusContext()
空の QDBusContext を構築します。
[noexcept]
QDBusContext::~QDBusContext()
空のデストラクタ。
bool QDBusContext::calledFromDBus() const
Dバス・コールを処理している場合、true
を返す。この関数がtrue
を返した場合、このクラスの残りの関数を使用できます。
この関数がfalse
を返したときにこれらの関数にアクセスすることは未定義であり、クラッシュにつながる可能性があります。
QDBusConnection QDBusContext::connection() const
このコールを受信したコネクションを返します。
bool QDBusContext::isDelayedReply() const
このコールに遅延応答がある場合はtrue
を返す。
setDelayedReply()も参照のこと 。
const QDBusMessage &QDBusContext::message() const
この呼び出しを発生させたメッセージを返す。
void QDBusContext::sendErrorReply(const QString &name, const QString &msg = QString()) const
呼び出し元への応答としてエラーname を送る。オプションのパラメータmsg は、失敗を説明する人間が読めるテキストである。
エラーが送信された場合、呼び出されたスロットの戻り値と出力パラメータは、Qt D-Bus によって無視される。
void QDBusContext::sendErrorReply(QDBusError::ErrorType type, const QString &msg = QString()) const
これはオーバーロードされた関数である。
呼び出し元への応答としてエラーtype を送る。オプションのパラメータmsg は、失敗を説明する人間が読めるテキストです。
エラーが送信された場合、呼び出されたスロットの戻り値と出力パラメータはQt D-Bus によって無視されます。
void QDBusContext::setDelayedReply(bool enable) const
この呼が遅延応答を持つかどうかを設定する。
enable がfalseの場合、Qt D-Bus は、呼び出されたスロットが戻るとすぐに、必要であれば、呼び出し元への返信を自動的に生成する。
enable がtrueの場合、Qt D-Bus は自動返信を生成しない。また、スロットからの戻り値や出力パラメータも無視します。代わりに、呼び出されたオブジェクトは、受信メッセージを保存し、後で返信またはエラーを送信する責任を負います。
応答を送信しないと、D-Busによって自動タイムアウト・エラーが生成されます。
isDelayedReply()も参照のこと 。
© 2025 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.