我想使用 Qt 为 Windows 制作一个查找实用程序。我在 C# 和 .NET 中创建了相同的应用程序,我想进行比较。我的应用程序将不得不QDir::entryList
递归地使用来查找指定路径的内容并将它们添加到QListWidget
. 因为 entryList 可能很慢,所以它必须在QThread
. 此外,用户不应该等待很长时间才能看到一些结果,而是QListWidget
应该填充一些结果。
我做了以下事情:
- 我创建了一个进行搜索的类,该类
sendItem(QString)
在找到文件时会发出一条消息。 - 此类在另一个线程中运行,
f.moveThread(&thread)
其中 wheref
是 find 类的对象。 - 因为 QListWidget 没有插槽,所以我创建了另一个
wrapper
具有插槽addItem(QString)
的类,该类的对象在 GUI 线程中执行,因此当接收到消息时sendItem
,插槽addItem
执行以下操作l.addItem(s)
,其中s
是通过sendItem
信号传输的数据。
这是从另一个线程更新 QListWidget 的最佳方式吗?因为它非常复杂,(而且它不起作用)但我不知道更好的。在 C# 中,我刚刚创建了一个delegate FillList
我在委托对象中放入了一个方法fillList
。我只是在我调用的方法中使用 wpf 列表框的方法作为参数给出了一个BeginInvoke
and 。您可以在sourceforge.net中查看 C# 应用程序fillList
this.Dispatcher.invoke
addItem
和其他问题:是否最好将QListView
用于这种应用程序?感谢你的回答。