簡體   English   中英

如何使用 QThread 創建一個分離的線程,就像在 std::thread 中一樣

[英]how to create a detached thread with QThread, like in std::thread

我已經使用 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 中做同樣的事情?

您不能,但是根據正確QThread使用的 KDAB 文檔,您可以通過將QThread::finished連接到QThead::deleteLater來模擬這種行為,如他們的QThread文檔所示https://www.kdab.com/wp-內容/上傳/故事/multithreading-with-qt-1.pdf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM