1. 程式人生 > >qt4 子執行緒給主執行緒發訊息,發資料,通訊,qthread gui postevent emit

qt4 子執行緒給主執行緒發訊息,發資料,通訊,qthread gui postevent emit

【轉帖請註明出處:blog.csdn.net/lanmanck】

用了qthread後,自然想起給gui執行緒傳送資料。

在qt4中,QCustomEvent已經不使用了。因為qthread是從QObject繼承的,所以可以使用signal,slot機制來通訊。

1、線上程定義signal:

class aa:public QThread

{

Q_OBJECT

...

signals:

void sendData(char*p,int len);

}

然後線上程的cpp裡面發射此訊號:

emit sendData(buf,124);

注意:不需要實現此函式,因為此函式被連線到下面的slot了。

2、在gui執行緒,或者別的執行緒裡面建立slot來接受此訊號:

標頭檔案:

class MyGUIClass:public QMainWindow

{

private slot:

  void receiveData(char*p,int len);

}

cpp檔案:

在建構函式裡先connect:

aa1 = new aa();

connect(aa1,SIGNAL(sendData(char*p,int len)),this,SLOT(receiveData(char*p,int len));

然後實現這個接收函式:

void MyGUIClass:receiveData(char*p,int len)

{

//

}

構建過程有點羅嗦,沒有mfc簡單。

注意:定義signals後,要加上Q_OBJECT,並且要make distclean.否則連線的時候提示找不到那個signal函式。

相關推薦

qt4 執行執行訊息資料通訊qthread gui postevent emit

【轉帖請註明出處:blog.csdn.net/lanmanck】 用了qthread後,自然想起給gui執行緒傳送資料。 在qt4中,QCustomEvent已經不使用了。因為qthread是從QObject繼承的,所以可以使用signal,slot機制來通訊。 1、線

Android執行執行傳送訊息

Android執行緒機制和Java幾乎一樣,基本用法還是有兩種 新建一個類繼承Thread類 實現Runnable介面的方式定義一個執行緒 兩種方法都需要覆寫run方法,並用start方法啟動 1.new MyTread().start(); 2.n

toast彈框、imageview、進度條、執行訪問執行執行中的通訊handler)

1、imageview ?xml version="1.0" encoding="utf-8"?> <ImageView android:layout_width=“200dp” android:layout_marginLeft=“100dp” an

Java多執行--讓執行等待執行執行完畢

參考連結:https://www.cnblogs.com/eoss/p/5902939.html 使用Java多執行緒程式設計時經常遇到主執行緒需要等待子執行緒執行完成以後才能繼續執行,那麼接下來介紹一種簡單的方式使主執行緒等待。 java.util.concurrent.CountDown

Qt中通過訊號和槽在執行執行中進行資料傳遞

QT中兩個執行緒之間進行自定義型別資料傳遞 兩個執行緒中進行資料傳遞時,傳遞的資料放到佇列中(queue),所以在這個過程中,需要在傳遞前將資料拷貝、儲存到佇列中;為了儲存這些引數,Qt需要construct、destruct、copy這些物件,為了讓Qt知道

進度條與執行訪問執行

1.進度條(ProgressBar) 進度條的屬性: style=”?android:attr/progressBarStyleHorizontal” 預設為圓形 android:progress=”33” 進度條進行到的當前位置(去activity

Unity執行執行互動(委託方式)

using System; using System.Collections; using System.Collections.Generic; using System.Threading; using UnityEngine; /// <summary> /// 子執行緒與主執行

java在執行執行傳遞資料(回撥函式)

預習知識點: 什麼是回撥函式? 下面是知乎大神的回答,簡直不能再精闢 程式碼: package kun.thread; public class THread { static C c=new C(); //flag用來標誌子執行緒執行結束 stati

JAVA執行等待所有執行執行完成後執行執行

         如標題,此功能主要是JDK1.5引入的java.util.concurrent包下的CountDownLatch類,此類據介紹為以執行緒輔助類,通過執行緒計數器來實現一個或多個主執行緒等待其下所有子執行緒執行完後主執行緒再繼續執行的功能。        

Java 執行執行等待執行awaitTermination方法使用詳解

    Java中在使用Executors執行緒池時,有時場景需要主執行緒等各子執行緒都執行完畢後再執行。這時候就需要用到ExecutorService介面中的awaitTermination方法,我們來看看原始碼中對該方法的說明:大概意思是這樣的:該方法呼叫會被阻塞,並且在

Java執行執行交替輸出(一個簡單的例項)

實現主執行緒和子執行緒的交替輸出列印,首先建立一個實現執行緒方法的Service public class Service { private volatile boolean flag = false; //這是一個控制sub和mian的開關,加關鍵字volatil

[Java][Android] 多執行同步-執行等待所有執行完成案例

有時候我們會遇到這樣的問題:做一個大的事情可以被分解為做一系列相似的小的事情,而小的事情無非就是引數上有可能不相同而已! 此時,如果不使用執行緒,我們勢必會浪費非常多的時間來完成整個大的事情,而使用執行緒的話將會存在這樣的問題: 主執行緒啟動所有子執行緒併發執行後主執行緒就

MFC執行訪問執行對話方塊程式的控制元件物件

       最近在使用 VC 開發軟體時需要用到多執行緒同步來解決開發過程中遇到的問題。本來以為只要象控制檯程式一樣,在主執行緒建立子執行緒,並設定好相應的物件事件就能解決問題,但是等到真正做起來,才在實踐中發現原來事情並沒有我想象的那麼簡單。以下我介紹一下我在開發過程中

執行demo-執行執行交替執行

package Thread; /** * 實現效果:主執行緒執行10次,子執行緒執行100次,主執行緒和子執行緒迴圈交替執行50次     主要演示synchronized和wait、notify的使用  * 適用場景:只有兩個執行緒的情況,呵呵  */ public c

Android使用Handler實現執行執行執行之間通訊

今天這篇文章只講一下怎麼使用Handler實現子執行緒與子執行緒之間、子執行緒與主執行緒之間如何進行通訊,關於具體的內部實現因為我也沒研究過,所以這篇文章講不了。 一、子執行緒向主執行緒傳值: 這個實現比較簡單,因為主執行緒自帶Looper機制,所有我們不用

java執行執行等待執行執行完成

Java如何等待子執行緒執行結束 今天討論一個入門級的話題, 不然沒東西更新對不起空間和域名~~ 工作總往往會遇到非同步去執行某段邏輯, 然後先處理其他事情, 處理完後再把那段邏輯的處理結果進行彙總的產景, 這時候就需要使用執行緒了. 一個執行緒啟動之後, 是非同

post請求網路資料返回執行更新UI例項

postHttp封裝的程式碼 package honghu.com.test.http; import android.os.Bundle; import android.os.Handler; im

執行執行傳遞訊息

package com.example.day19_handler_demo1; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.a

Android 開執行工作並用監聽器傳回結果到執行--執行執行通訊

最近研究別人的程式碼,看到其開多執行緒進行工作,並且將結果通過監聽器的方式返回給UI執行緒,程式碼很管用,也容易理解,所以就先記下來 寫一個介面做為監聽器(WorkListener),裡面可以有多個方法,用於對應子執行緒工作不同的事件,如onStart(),

AndroidStudio 執行通知執行Demo

import android.os.Handler; import android.os.Looper; import android.os.Message; import android.support.v7.app.AppCompatActivity; import a