我正在尝试使用线程创建此QT gui但没有运气。以下是我的代码。问题是gui永远不会出现。
/*INCLUDES HERE...
....
*/
using namespace std;
struct mainStruct {
int s_argc;
char ** s_argv;
};
typedef struct mainStruct mas;
void *guifunc(void * arg);
int main(int argc, char * argv[]) {
mas m;<br>
m.s_argc = argc;
m.s_argv = argv;
pthread_t threadGUI;
//start a new thread for gui
int result = pthread_create(&threadGUI, NULL, guifunc, (void *) &m);
if (result) {
printf("Error creating gui thread");
exit(0);
}
return 0;
}
void *guifunc(void * arg)
{
mas m = *(mas *)arg;
QApplication app(m.s_argc,m.s_argv);
//object instantiation
guiClass *gui = new guiClass();
//show gui
gui->show();
app.exec();
}
答案 0 :(得分:6)
这里似乎有两个主要问题:
main()
函数在创建线程后正在完成,从而导致进程立即退出。从基于Qt示例代码的常规应用程序开始。如果你使用Qt Creator,它可以提供大量的帮助和骨架代码来帮助你入门。然后,一旦有了可用的GUI,就可以开始考虑在需要时添加工作线程。但你应该对多线程问题进行一些研究,因为对于那些粗心大意的人来说存在许多陷阱。玩得开心!