2012-12-13 18 views
0

我想为使用Qt的Windows制作一个查找工具。我在C#和.NET中创建了相同的应用程序,我想做一个比较。我的应用程序将不得不递归地使用QDir::entryList来查找指定路径的内容并将它们添加到QListWidget。因为entryList可能很慢,所以它必须在QThread中运行。另外,用户不应该等待很长时间才能看到一些结果,但QListWidget应该填充一些结果。在Windows上使用Qt创建多线程GUI应用程序。如何使用QListWidget?

我也做了以下内容:

  1. 我创建了一个类,做搜索,当它发现一个文件,这个类发出的消息sendItem(QString)
  2. 此课程在另一个线程中运行 f.moveThread(&thread)其中f是find类的一个对象。
  3. 由于QListWidget没有我已创建的另一个类wrapper具有槽addItem(QString)这个类的一个对象在GUI线程执行的狭槽,以便当接收到该消息sendItemaddItem执行以下操作l.addItem(s)其中s是数据与sendItem信号一起传输。

这是从另一个线程更新QListWidget的最佳方式吗?因为它非常复杂,(它不起作用),但我不知道更好的一个。在C#中,我刚刚创建了一个delegate FillList我在委托对象中放入了一个方法fillList。我刚刚给出了一个BeginInvoke,并从fillList方法中调用this.Dispatcher.invoke,使用wpf listbox的addItem方法作为参数。你可以看到C#应用程序sourceforge.net

还有其他问题:是否最好使用QListView这种应用程序? 感谢您的回答。

回答

1
  1. 这是从另一个线程更新GUI的Qt方式。 由于你的工作不成功,我认为你可以粘贴一些代码,我们将分析。如果你的列表不是很大,QListWidget是可以的,但是如果你的列表非常大,那么最好使用QListView,因为对于QListWidget,列表中呈现的每个项目本身就是一个小部件,这将花费很多的记忆。但在QListView中,它是负责绘制所有项目的视图的委托。

相关问题