【发布时间】:2014-02-08 14:40:09
【问题描述】:
我正在用 Qt 编写程序,下面是我的代码的一部分:
for(int row=0; row < 15; row++)
{
for(int column=0; column < 12; column++ )
{
if(query->exec(db->getInsertQuery(row,column)))
{
}else
qDebug() << "Failed to insert cell";
}
}
当我运行这个程序时,它进入“无响应”状态。当我跑步时
query->exec(db->getInsertQuery(0,0));
query->exec(db->getInsertQuery(0,1));
....
代替 for 循环程序运行正常,但我不能在我的程序中写这么多行。您能否建议我在执行查询之前阻止 for 循环的方法以及如何在某些框中显示进度条直到 for 循环完成?
【问题讨论】:
-
您可以使用QProgressDialog在许多同步操作中显示进度条并避免无响应状态。有关示例,请参见文档页面。
-
关键是你必须回到事件循环。模态
QProgressDialog将为您调用processEvents()(请参阅其文档);否则你需要以某种方式允许事件处理。另请参阅this。 -
@peppe 我通过将 query->finish() 放在 if-else 下面解决了这个问题,我的程序运行良好:)