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: '引数': 'Dialog *const' から 'QObject *' へのあいまいな変換
C:\Users\niki\Documents\EncryptionProject\dialog.cpp:46: エラー: C2594: '引数': 'Dialog *const' から 'QObject *' へのあいまいな変換
C:\Users\niki\Documents\EncryptionProject\dialog.cpp:51: エラー: C2385: 'connect' のあいまいなアクセスは、ベース 'QObject' の 'connect' であるか、ベース 'QObject' の 'connect' である可能性があります
さらに 31 個のエラーがあるため、次のようになります。
- ここで最良の選択肢は何ですか?
- MVC または別のパターンを使用する必要がありますか?
- スレッドを使用する必要がありますか?