【发布时间】:2013-09-30 13:43:09
【问题描述】:
我的应用程序有一个简单的 GUI = 我必须为我的数学函数设置一些输入参数,然后单击“计算”按钮,然后函数启动。数学函数是用纯 C 编写的,所以没有对象,只有函数。
看起来像这样:
#include "mymath.h"
class myMath : public QMainWindow
{
Q_OBJECT
// ...
void compute();
};
void myMath::compute()
{
//get parameters from gui
call_C_fun();
// save results to GUI
}
这段代码的主要问题是,当我单击“计算”时(它进行了大量计算,最多需要 5 分钟左右)它会挂起我的 GUI,所以我不能做任何其他事情(我可以'甚至看不到我的 GUI,窗口在计算运行期间被“冻结”。函数完成后,它在 QLabels 上打印结果,GUI 再次“活着”。我该如何解决这个问题?我没有当计算需要时间时,不希望我的 GUI 被“冻结”。有什么想法吗?我想过 QThread - 但我在线程方面有点新,所以请给新手简单易懂的答案: )
【问题讨论】:
-
看看this。然后在线程对象中进行计算,并在完成后发送信号。将信号连接到班级中的一个插槽,然后对结果做任何你想做的事情。
-
而
class myMath后面还有两个:分号,因为...?
标签: c++ qt user-interface