2010-12-29 9 views
1

私は、最初はQtライブラリで作業しています。 Qtウィジェットをサブクラス化して、そのウィジェットに渡されたすべてのメッセージを傍受できるようにする方法があるかどうか疑問に思っています.Windowsで使用する可能性はありますが、Qtで可能かどうかは分かりません。代わりがありますか?Qtライブラリ、メッセージを傍受するためのサブクラス化ウィンドウ?

問題のQWidgetはチャットタイプであり、QListタイプです。 QWidgetライブラリを使用して、ウィジェットであるListに追加されたものをどのように傍受することが可能ですか?

ありがとうございました。

答えて

1

メッセージの意味によって異なります。

1 - イベントの場合、最終的に特定のハンドラ関数にイベントを渡すことになるイベントハンドラがあると思います。

2信号、私はまだ試していませんが、かもしれない qt_metacallを完全に非標準的な振る舞いに変更することは可能です。あなたはvoid **を何か意味のあるものにする方法を見つけなければなりません。それはあなたが何を反応しているのか正確に知らなければ、かなり難しいことです。 MOC生成関数に何をすべきかを指示する 'id'パラメータがあり、残りはスイッチとreinterpret_castsです。

3 - "メソッド"への呼び出しが "メッセージ"であるオブジェクト指向の意味での "メッセージ"。 C++はこのように動作しません。申し訳ありません。そのような振る舞いが必要な場合は、JavaやObjective-Cのようなものが必要です。

+0

ノアは、「チャット」と呼ばれるQWidgetを持っていて、それ自体がリストであるqwidetコントロールを含んでいたとします。リストに追加されるたびにどのように傍受されますか?あるいは、アイテムがリストに追加されるたびに、通知を受けて最後のアイテムを読み取ることができますか?ポイント3で私はそれが私の言語の選択(話)だと思う - 私は実際にはqwidgetのリストに追加されたときに私もデータを取得するために真ん中に何かを挿入することを話していた。 – flavour404

+0

@flavour404リストオブジェクトをチャットウィジェットのプライベートメンバーにするだけでは、パブリックメンバー関数MyAddItemToList(...)を追加することはできません。リストにアイテムを追加したい人は、リストアイテムを直接追加するのではなく)次に、必要な追加ロジックをMyAddItemToListメソッドに追加します。誰かがあなたの背中のリストにアイテムを追加するために、ウィジェットツリートラバーサルや他の疑わしいメソッドを使用していない限り、それは十分であるはずです。 –

+0

本当にQListを意味する場合は、いいえ。 QListはウィジェットではなく、コンテナでありシグナルを生成しません(Q_OBJECTオブジェクトはテンプレートではありません)。 QListWidgetまたはQListViewを意味している場合は、そのモデルに接続できます。どの信号があなたのニーズに特有のものになるか。参照:http://doc.qt.nokia.com/4.7/qabstractitemmodel.html –

関連する問題