c++ - 在 C++ 中使用线程创建 QT gui?

标签 c++ user-interface qt multithreading

我正在尝试使用线程创建此 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(); 
}

最佳答案

这里似乎有两个主要问题:

  1. GUI 没有出现,因为您的 main() 函数在创建线程后完成,从而导致进程立即退出。
  2. GUI 应该在主线程上创建。大多数框架都需要在主线程上创建、修改和执行 GUI。您生成线程来完成工作并将更新发送到主线程,而不是相反。

从基于 Qt 示例代码的常规应用程序开始。如果您使用 Qt Creator,它可以提供大量帮助和框架代码来帮助您入门。然后,一旦你有了一个可用的 GUI,你就可以开始考虑添加工作线程(如果需要的话)。但是你应该对多线程问题做一些研究,因为粗心的人会遇到很多陷阱。玩得开心!

关于c++ - 在 C++ 中使用线程创建 QT gui?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2541415/

相关文章:

C++ toString 成员函数和 ostream 运算符 << 通过模板集成

c++ - 可调整大小和动态二维数组的更好解决方案

python - wxpython phoenix 说 Frame init args 错误

c# - 如何在 MVP 中最好地处理 subview 的协调?

qt - PhantomJS 2.0 文本在呈现为 PDF 时无法选择

c++ - 使用 bool operator== 比较对象

c++ - 如何从 Windows cmd 运行可执行文件并向其传递参数参数和文件输入重定向?

user-interface - meteor js 模板呈现与 onRendered

qt - 修复 QT 设计器布局中小部件的大小

Qt 获取适合固定 QRect 的大 QString 的子字符串