//!!! qt5
#include // news*****.h
class news***** : public qobject
void send()
signals:
void new*****(const qstring &name);
private:
qstring m_name;
};// reader.h
#include #include class reader : public qobject
void receivenews*****(const qstring & name)
};// main.cpp
#include "reader.h"
int main(int argc, char *argv)
1、傳送類和接收類
繼承了qobject類
。凡是qobject類
(不管是直接子類還是間接子類),都應該在第一行**寫上
q_object
。不管是不是使用訊號槽,都應該新增這個巨集。這個巨集的展開將為我們的類提供訊號槽機制、國際化機制以及 qt 提供的不基於 c++ rtti 的反射能力。注意,這個巨集將由 moc(我們會在後面章節中介紹 moc。這裡你可以將其理解為一種預處理器,是比 c++ 預處理器更早執行的預處理器。) 做特殊處理,不僅僅是巨集展開這麼簡單。moc 會讀取標記了 q_object 的
標頭檔案,生成以 moc_ 為字首的檔案,比如 news*****.h 將生成 moc_news*****.cpp。你可以到構建目錄檢視這個檔案,看看到底增加了什麼內容。注意,由於 moc 只處理標頭檔案中的標記了q_object
的類宣告,不會處理 cpp 檔案中的類似宣告。2、
使用 signals 標記訊號函式,訊號是乙個函式宣告,返回 void,不需要實現函式**;
3、emit 是 qt 對 c++ 的擴充套件,是乙個關鍵字(其實也是乙個巨集)。emit 的含義是發出,也就是發出new*****()訊號。感興趣的接收者會關注這個訊號,可能還需要知道是哪份報紙發出的訊號?所以,我們將實際的報紙名字m_name當做引數傳給這個訊號。
Qt自定義訊號槽
qt自定義訊號槽,在控制台程式中實現 qt5 如下 qt5 include news h class news public qobject void send signals void new const qstring name private qstring m name reader.h i...
Qt 自定義訊號槽
使用 connect 可以讓我們連線系統提供的訊號和槽。但是,qt 的訊號槽機制並不僅僅是使用系統提供的那部分,還會允許我們自己設計自己的訊號和槽。這也是 qt 框架的設計思路之一,用於我們設計解耦的程式。本節將講解如何在自己的程式中自定義訊號槽。訊號槽不是 gui 模組提供的,而是 qt 核心特性...
C C Qt 訊號自定義槽函式
qt中實現自定義訊號與槽函式,訊號用於傳送並觸發槽函式,槽函式則是具體的功能實現,如下我們以老師學生為例子簡單學習一下訊號與槽函式的使用方法。使用無引數訊號與槽 首先定義乙個teacher類,該類中用於傳送乙個訊號,其次student類,定義用於接收該訊號的槽函式,最後在widget中使用emit觸...