【发布时间】:2016-02-17 06:51:41
【问题描述】:
我正在制作能够根据给定密码 Cryptofm 加密和解密文件/文件的开源文件管理器。您可以从here 获取代码 - 第一个版本。我想添加状态对话框,表示带有Dialog::encAll()插槽的进度条的加载屏幕,在进度条达到最大值后关闭状态对话框。我发现我必须首先递归地找到文件夹中所有文件的总大小(在TreeView上下文菜单选项Size中) - 插槽Dialog::dirSize()是在函数Dialog::getSelectedTreeItemSize()的帮助下做到这一点的,然后设置进度条属性最大值为该值。总大小计算过程可能会再次花费大量时间,因此我需要另一个对话框,其中包含移动内容以指示该过程正在执行。整个过程应该类似于在 Windows 7 中粘贴包含大量文件的超大文件夹的过程。
获取总大小的过程:
进度条达到总大小的粘贴过程:
问题是几乎所有功能、动作等都在 Dialog 类中实现,我无法使用线程 - 在 dialog.h 中添加像这样Dialog : public QDialog, public QThread 这样的 QThread 之后(能够实现 run()方法)程序给出了一些错误:
C:\Users\niki\Documents\EncryptionProject\dialog.cpp:41:错误:C2594: 'argument' : 从 'Dialog *const' 到 'QObject 的模棱两可的转换 *'
C:\Users\niki\Documents\EncryptionProject\dialog.cpp:46:错误:C2594: 'argument' : 从 'Dialog *const' 到 'QObject 的模棱两可的转换 *'
C:\Users\niki\Documents\EncryptionProject\dialog.cpp:51:错误:C2385: “连接”的模糊访问可能是基础“QObject”中的“连接” 或者可能是基础“QObject”中的“连接”
还有 31 个错误,所以:
- 这里有哪些最佳选择?
- 我应该使用 MVC 还是其他模式?
- 我应该使用线程吗?
【问题讨论】:
标签: c++ qt architectural-patterns