在QT中循环而不会崩溃

时间:2013-01-25 05:28:28

标签: c++ qt

这是我的代码:

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);
}

我想这个循环不会在几秒钟后冻结整个程序,这是可能的,还是我需要多线程?

如果多线程是唯一的选择,有人可以给我一些示例代码(将变量发送到第二个线程)

我将代码放在main.cpp中,每次检查代码时都让它运行,但在QT中,main.cpp只执行一次。

顺便说一下,这是一个示例代码,显然它什么也没做,我会在循环中放入一些文件操作。

1 个答案:

答案 0 :(得分:3)

在循环中调用

QCoreApplication::processEvents()以避免UI冻结。

while(percent<100)
{
    if(clock()-Stime>250)
    {
        percent++;
        NUI->progressBar->setValue(percent);
        Stime=clock();
    }
    QCoreApplication::processEvents();
    Sleep(1);
}