这是我的代码:
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只执行一次。
顺便说一下,这是一个示例代码,显然它什么也没做,我会在循环中放入一些文件操作。
答案 0 :(得分:3)
QCoreApplication::processEvents()
以避免UI冻结。
while(percent<100)
{
if(clock()-Stime>250)
{
percent++;
NUI->progressBar->setValue(percent);
Stime=clock();
}
QCoreApplication::processEvents();
Sleep(1);
}