我試圖圍繞線程和gui應用程序打包頭,以便可以開始構建它們。我下載了Qt SDK,但有點丟失。使用Qt的簡單線程GUI應用程序的結構是什麼?
爲了讓我能理解這是如何工作的,我想創建一個由文本框和兩個按鈕組成的GUI應用程序。每個按鈕都會啓動一個新的線程(所以3個可以同時運行:主要的gui線程,2個按鈕啓動),每個按鈕都可以訪問文本框中的信息。我將如何設置這個應用程序?
我試圖圍繞線程和gui應用程序打包頭,以便可以開始構建它們。我下載了Qt SDK,但有點丟失。使用Qt的簡單線程GUI應用程序的結構是什麼?
爲了讓我能理解這是如何工作的,我想創建一個由文本框和兩個按鈕組成的GUI應用程序。每個按鈕都會啓動一個新的線程(所以3個可以同時運行:主要的gui線程,2個按鈕啓動),每個按鈕都可以訪問文本框中的信息。我將如何設置這個應用程序?
看看SIGNAL和SLOTS這是Qt的基礎。
完成之後,請查看QThread和QThreadPool。
此外,我建議這些要命的教程:http://www.voidrealms.com/tutorials.aspx?filter=qt
你有一個插槽連接到QPushButton點擊信號,並從該插槽啓動一項新的線程,如下圖所示。
QPushButton *button=new QPushButton();
connect(button,SIGNAL(clicked()),this,SLOT(startthread()));
和插槽startthread將kickstart的一個工人階級
void MyClass::startthread()
{
QThread *thread=new QThread();
WorkerClass * worker=new WorkerClass();
worker->moveToThread(thread);
thread->start()
}
凡WorkerClass將在一個單獨的線程執行的新線程。
我試過這樣做,我也嘗試了另一個線程示例。我無法讓我的線程開始似乎。我爲按鈕設置了一個點擊事件,然後當事件觸發時,我使用您在那裏的代碼。然後在我的工人類重寫「運行」功能,我做了另一個對話框。但那個對話永遠不會發生。你有什麼想法爲什麼我的線程無法啓動?在Mac上使用Windows來搞亂線程庫會有什麼關係嗎? –
Qt小部件總是在主線程(GUI線程)中創建的......所以您不應該在單獨的線程中創建小部件(QDialog)....相反,您應該只能訪問其他線程中的數據並更新主線程中的gui –
這裏有一個解釋這個鏈接的鏈接:http://doc.qt.digia.com/4.7-snapshot/thread-basics.html –
謝謝,我正在查看視頻 –