qt訊號和槽機制的問題
1樓:網友
你可以把訊號和槽的關係理解為函式呼叫的問題。當你的程式中某處發出了乙個訊號,例如。
emit valuechanged(100),那麼相當於你要呼叫和這個訊號相連的槽,即上一句可以理解為呼叫。
setnum(100)。
當然,訊號和槽比上述呼叫要先進,例如可以在含有emit valuechanged(100)的函式執行完成後才呼叫setnum(100)函式。也可以在執行emit valuechanged(100)的地方呼叫setnum(100),setnum(100)執行完成後再繼續執行下一句。就像「ianynchen」所說的那樣相當於函式指標。
既然相當於函式呼叫,那麼訊號和槽的引數型別和順序應該一致。當然如果訊號的引數個數多於與其關聯的槽的引數個數,多於的這些引數不可能傳入槽中,因此被忽略了。
用訊號和槽機制可以方便模組化程式設計,也就是說編寫模組的時候不用理會發出的訊號會被誰接收,接收後會幹什麼,同理不用理會訊號由誰發出,如何發出。你可以試試看如果不用訊號和槽機制,讓乙個模組呼叫另乙個模組的函式,你會發現這時你需要對著兩個模組的結構都有了解才能進行下去。
同時訊號和槽可以動態鏈結和unconnect,非常靈活。
訊號和槽是qt中的乙個非常重要的內容,建議你多花時間學習,靈活運用訊號和槽可以大大簡化你的程式設計工作。建議你好好看看幫助文件中關於訊號和槽的那部分內容。
訊號和槽的實現過程實際上是qt將你的源**翻譯了一下,變成了含有_moc的標準cpp原始檔,然後才去編譯連線。有時間的話你可以對比一下你的源**和翻譯後的含有_moc的源**。
2樓:網友
signal和slot的返回型別都是void,所以你可以認為是要求輸入引數個數、型別、返回型別都要求一致。connect接受的是char*,所以實際上signal、slot都是把後面的引數轉化為char*。說穿了你可以把signal、slot理解為函式指標,只是因為是指向物件函式的指標,所以先要給出物件指標,然後是函式。
訊號槽機制實際上無非就是從signal的函式去呼叫對應的slot函式。所以要求signal、slot的簽名必須一致。否則還要另外設定引數的對應方式,就搞得太複雜了。
你可以把signals、slots理解為乙個擴充套件巨集。這個巨集的作用是做乙個標記,只能把signal連線到signal或者slot,而不能隨便連線到任意的函式。這方面qt沒有boost的靈活。
qt中 訊號 槽 與c++的區別
3樓:晰美酒窩
qt是用c++編寫的庫,沒有c++就沒有q
補充:qt的程式在編譯之前需要經過qt的處理器處理一遍,你可以將connect,signal,slot之類的理解為巨集,在經過處理之後的程式中,這些都會轉換成一些列的c++的語句,用來完成事件的繫結和觸發。本質還是c++,只是中間又加了一層翻譯的過程。
補充:qt(官方發音同cute發音為 /kju:t/,雖然也俗稱為發音為 /kju:
tiː/")是乙個跨平臺的c++應用程式開發框架。廣泛用於開發gui程式,這種情況下又被稱為部件工具箱。也可用於開發非gui程式,比如控制檯工具和伺服器。
4樓:5230娘
訊號與c++是無關的,它獨立於c++語言。槽則是普通的c++成員函式,唯一特殊的地方就是它可以與多個訊號相關聯,當訊號被髮射時,它就會被呼叫。
5樓:網友
qt的程式在編譯之前需要經過qt的處理器處理一遍,你可以將connect,signal,slot之類的理解為巨集,在經過處理之後的程式中,這些都會轉換成一些列的c++的語句,用來完成事件的繫結和觸發。本質還是c++,只是中間又加了一層翻譯的過程。
具體可以看看qt訊號和槽的實現原理。
6樓:網友
訊號和槽是qt的一種機制,是用c++實現的。
c++是一種語言,qt是使用c++語言來寫的。
請問電腦的作業系統和硬體的關係作業系統與計算機軟硬體有什麼關係
你看看數電就明白了,1和0是用高低電平表示的,量綱是伏特,不是電流,計算機工作時有個關鍵的部分,叫晶振電路,它可以按照一定頻率產生規則的序列脈衝,在規則脈衝的作用下,記憶體裡的高低電平狀態,即機器指令,也可稱為軟體,會裝入運算器進行運算,這就是程式的執行。最簡單的記憶體就是用觸發器構成的,說白了內存...
作業系統發展歷史是作業系統的發展過程
作業系統發展歷史 下面我們結合計算機的發展歷史來回顧一下作業系統的發展歷程。1.第一代計算機 1945 1955 真空管和外掛程式板 40年代中期,美國哈佛大學 普林斯頓高等研究院 賓夕法尼亞大學的一些人使用數萬個真空管,構建了世界上第一台電子計算機。開啟計算機發展的歷史。這個時期的機器需要乙個小組...
電腦主機的32位作業系統和64位作業系統是什麼意思 這兩個類
32 64位是指bai 位寬,表示ducpu一次可以處理32位或64位的指令zhi,理論上位寬越大dao的cpu,運算版能力就越強。當然權,只有硬體不行,還需要相應的軟體來支援才能發揮硬體的效能,於是便有了32位和64位的作業系統與軟體。相比32位系統,64位帶來兩個好處 一次能處理更大範圍的資料運...