一 自定義訊號槽

2021-08-21 10:52:06 字數 1109 閱讀 4149

//!!! 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觸...