0

これが私のコードです:

void FileOperations::EncryptAndSave(Ui::MainWindow *NUI){
int Stime = clock();
int percent=0;
NUI->progressBar->setVisible(1);
while(percent<100)
{
    if(clock()-Stime>250)
    {
        percent++;
        NUI->progressBar->setValue(percent);
        Stime=clock();
    }
    Sleep(1);
}
CFuncion=0;
NUI->progressBar->setVisible(0);
}

このループで数秒後にプログラム全体がフリーズしないようにしたいのですが、これは可能ですか、それともマルチスレッドが必要ですか?

マルチスレッドが唯一のオプションである場合、誰かが私にいくつかのサンプルコードを教えてもらえますか(2番目のスレッドに変数を送信することで)

コードをmain.cppに入れて、コードをチェックするたびに実行させるつもりでしたが、QTでは、main.cppは1回しか実行されません。

ところで、これはサンプルコードですが、明らかにまだ何もしていません。いくつかのファイル操作をループに入れます。

4

1 に答える 1

3

QCoreApplication::processEvents()UI のフリーズを回避するためにループ内で呼び出されます。

while(percent<100)
{
    if(clock()-Stime>250)
    {
        percent++;
        NUI->progressBar->setValue(percent);
        Stime=clock();
    }
    QCoreApplication::processEvents();
    Sleep(1);
}
于 2013-01-25T05:41:11.283 に答える