2

Qt に DBus サービスを実装する必要があります。このサービスは、特定の仕様に従うかなり複雑なデータを返す必要があります。データは基本的に、テスト済みの一連のマップ、配列、構造、およびその他のバリアントです。

これらすべてをメソッドからの返信に詰め込む便利な方法が見つかりません。QDBusArgumentこれにはクラスを使用できるはずです。たとえば、文字列の配列を作成するには、次のようにする必要があります。

QDBusArgument arg;
arg.beginArray( qMetaTypeId<QString>());
arg << "Hello" << "World";
arg.endArray();
QVariant var = arg.asVariant();

しかし、それはうまくいきません。QList手動でバリアントの sを苦労して構築する必要があるようです。確かにもっと良い方法がありますか?

4

1 に答える 1

0

このようなものがあなたを助けるはずだと思います

QDBusMessage msg = QDBusMessage::createSignal( ... )
QStringList strlist;
strlist << "Hello" << "World";
msg << QVariant::fromValue( strlist);
QDBusConnection::systemBus().send( msg );

注: カスタム タイプを使用している場合は、Q_DECLARE_METATYPE() マクロを使用してカスタム タイプを登録する必要があります。

于 2013-01-17T14:19:57.450 に答える