【发布时间】:2021-12-03 23:30:54
【问题描述】:
我已经使用 QThread 在 QT 中创建了一个线程,但线程的父级在线程完成之前退出,它本身正在无限运行。
//mainwindow.cpp
void MainWindow::showEvent(QShowEvent *ev)
{
QMainWindow::showEvent(ev);
showEventHelper();
}
void MainWindow::showEventHelper()
{
//back-end thread
ServerStart *serverstart = new ServerStart();//initializing a pointer to my class
QThread thread;
serverstart->moveToThread(&thread);
QObject::connect(&thread, &QThread::started, serverstart, &ServerStart::run);
thread.start();
//in std::thread i used to detache it like so:
//std::thread worker(serverMain);
//worker.detach();
}
重要提示:我正在制作一个 GUI 项目。并且我的无限线程位于 onShow() 方法中,该方法需要退出才能使应用程序继续并制作 UI。并且我还想将来从线程向主线程发送信号,并且主线程应该能够根据信号响应和修改UI。
如何在 QT 中做同样的事情?
【问题讨论】:
-
分离一个线程并不是一个普通的操作,也许你可以只
new一个QThread,传递一个QObject来管理线程的生命周期? -
哦,我想,我的帖子不清楚。我正在制作一个 GUI 项目。并且我的无限线程位于 onShow() 方法中,该方法需要退出才能使应用程序继续并制作 UI。并且我还想将来从线程向主线程发送信号,主线程应该能够根据信号响应和修改UI。
标签: c++ multithreading qt qthread