我站在一个小的(也许不是)问题面前。我有一个解析XML文件的函数(非常大的xml〜1Gb),所以需要很多时间(5-6分钟完成func)。我不想在GUI线程中使用它,因为已知的问题(mainwindow冻结并且什么都没有发生,所以用户认为一切都出错了)。我试着用如何在另一个线程中运行一个函数
QtConcurrent::run
但更多的一个问题来解决这个问题出现了:如果用户按X键(在右上角的关闭按钮)主GUI线程下降,但其产生的孩子,我的线程QtConcurrent :: run继续他的工作,我只能通过任务管理器杀死他。
我决定,而不是使用QtConcurrent :: RUN6 QThread的,但我不明白我怎么可以运行MainWindow类功能:
void MainWindow::parseXML()
我试图像这样创建水木清华:
class pThread : public QThread
{
Q_OBJECT
private:
void run();
};
void pThread::run(){
MainWindow::parseXML();
}
但是,当我试图编译错误显示:
cannot call member function 'void MainWindow::parseXML()' without object
而且,我不知道有可能通过此方法更新GUI线程(parseXML函数更改状态栏)
我该怎么办?
请帮忙:(( – tema 2013-05-06 16:48:45