5

D-Bus を利用したプログラムを作成しようとしています。私は Qt で提供されている例をほぼ同じように調べました。「D-Bus リモート コントロール カーの例」と呼ばれるそのうちの 1 つに、次の内容の「car.xml」という名前のファイルがあります。

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="/com/trollech/examples/car">
 <interface name="org.example.Examples.CarInterface">
  <method name="accelerate"/>
  <method name="decelerate"/>
  <method name="turnLeft"/>
  <method name="turnRight"/>
  <signal name="crashed"/>
 </interface>
</node>

私が間違っていなければ、「qdbuscpp2xml」という名前のツールを使用してこのファイルを生成することになっています。このコマンドを使用してxmlを生成すると:

$ qdbuscpp2xml -A car.h -o car2.xml

生成された XML ファイルで次のコンテンツを取得します。

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
  <interface name="local.Car">
    <signal name="crashed">
    </signal>
    <method name="accelerate">
    </method>
    <method name="decelerate">
    </method>
    <method name="turnLeft">
    </method>
    <method name="turnRight">
    </method>
  </interface>
</node>

次の行で car.xml とは異なります。

<node name="/com/trollech/examples/car">
 <interface name="org.example.Examples.CarInterface">

別のファイルを取得するのはなぜですか? サンプルに含まれているファイル (car.xml) は手動で作成されましたか?

4

1 に答える 1

4

私は自分でそれを理解しました。ツール、つまりは、現時点では に属性をqdbuscpp2xml割り当てません。属性を割り当てたい場合は、自分で入力する必要がありますが、ノードの場合、公開したいクラス内にマクロを配置することで、上記のツールに自動的に割り当てさせることができます。name<node>name<interface>Q_CLASSINFO

于 2014-04-25T15:14:39.683 に答える