2012-01-17 16 views
1

背景基本リフレクションを使用した軽量のシグナルスロット実装はありますか?

動的に構成可能なデータ処理ツールキットを実装する必要があります。いくつかのデータ処理エンティティがあり、GUIツールを使用してデータフローグラフに結合することができます。 このアイデアは、ダイレクトショーフィルタグラフ(GraphEdit)やAppleのQuartz Composerに似ています。

GUIツールはグラフ定義をファイルに保存します。実際の処理が開始されると、この定義ファイルが読み込まれ、実行時にデータ処理オブジェクトを作成して接続する必要があります。

似たような問題にQtの信号とスロットを使用しましたが、今回はメインプログラムにGUIがありません。だから私はあまり肥大していないものを使いたいです。

質問

のQtを使用せずに、基本的な反射で信号/スロット機能を持つための最も簡単な方法は何ですか?

固定数のスロットタイプを定義する必要があります(あらかじめ定義済みの機能シグネチャがそれぞれあります)。 たとえば、画像オブジェクトをパラメータとして取得する画像を消費するスロット、またはパラメータとしてintを受け取るだけのスロットがあります。

実行時に、すべての信号/スロットを繰り返し処理し、動的に接続する必要があります。

実行時にSlot/Signal Parametersを検査する必要はありません。固定数のパラメータセットを持つには十分です。署名の種類を特定するには、スロットの名前に何らかのヒントを入れることは大丈夫です。

私は信号/スロット機能を提供するsignal2の付いていることを知っています。しかし、リフレクションを実装する最も速い方法は何ですか?私自身のマクロハックを構築する必要がありますか?

+2

あなたはQtのシグナルとスロットは、([QtCore]であることを認識しているhttp://developer.qt.nokia.com/doc/qt-4.8 /qtcore.html)**ではなく、[QtGui](http://developer.qt.nokia.com/doc/qt-4.8/qtgui.html)であるため、 '#include'やリンクする必要はありませんすべてのGUIライブラリ、はい? –

答えて

0

私は使っていませんが、cpgfには必要なすべての機能(反射と信号/スロット)があります。

0

私はあなたが非GUIツールを開発するためにQtを使うことができると信じています。 AFAIR、doxygenはQtを使います。しかし私は自分でQtを使っていませんでした。

また、多くの時間と労力を費やす準備ができていない限り、リフレクションシステムを実装しないことをお勧めします。あなたは、あなたのアプリに汚れた、そして速い反射システムを実装するかもしれませんが、その後、あなたのアプリが成長するにつれて、それを維持し、改善するためにより多くの時間が必要かもしれません。
また、リフレクション用のマクロも忘れてしまいます。マクロはあまりにも醜いですし、エラーも起こりやすいです。

私のcpgfライブラリ(私は作者ですが)はまだ新しく(1年足らず)、他のライブラリほど成熟していないため、まだ宣伝する準備が整っていません。しかし、実際のプロジェクトで単体テストで動作するのではなく、実世界で動作することを確認するために実際のプロジェクトが使用されていれば、本当に感謝しています。そして、私はバグ修正のためにプロジェクトに必要な支援をしたいと思います。

関連する問題