Qtを使用してWindows用の検索ユーティリティを作成したいと思います。C#と.NETで同じアプリケーションを作成しましたが、比較したいと思います。私のアプリケーションはQDir::entryList
、指定されたパスの内容を再帰的に使用して検索し、それらをに追加する必要がありQListWidget
ます。entryListは遅い可能性があるため、で実行する必要がありQThread
ます。さらに、ユーザーはいくつかの結果を見るのに長い間待つべきではありませんQListWidget
が、いくつかの結果を入力する必要があります。
私は次のことをしました:
- 検索を行うクラスを作成しました。このクラスは
sendItem(QString)
、ファイルが見つかるとメッセージを出力します。 - このクラスは、findクラスのオブジェクトである
f.moveThread(&thread)
whereを使用して別のスレッドで実行され ます。f
- QListWidgetにはスロットがないため、スロットを持つ別のクラス
wrapper
を作成しましaddItem(QString)
た。このクラスのオブジェクトはGUIスレッドで実行されるため、メッセージを受信するとsendItem
、スロットaddItem
は次のようになりますl.addItem(s)
。ここで、はシグナルs
で送信されるデータです。sendItem
これは、別のスレッドからQListWidgetを更新するための最適な方法ですか?それは非常に複雑なので(そしてそれは機能しません)、しかし私はより良いものを知りません。C#delegate FillList
では、デリゲートオブジェクトにメソッドを入れて作成しましたfillList
。引数としてwpfリストボックスのメソッドを使用して呼び出しBeginInvoke
たメソッド内からとを指定しました。あなたはsourceforge.netでC#アプリケーションを見ることができますfillList
this.Dispatcher.invoke
addItem
そして他の質問:QListView
この種のアプリケーションにを使用することが望ましいですか?答えてくれてありがとう。