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