Qt C 自定義訊號 一例雙視窗案例

2022-02-03 03:14:26 字數 2776 閱讀 9788

建立自定義專案的方式 

實驗環境:linux mint下 qt5.11 c++

主視窗

子視窗這裡介紹兩個關鍵訊號功能的實現:

因為這些操作涉及兩個視窗間的訊號通訊,響應

總體設計思想:

對於func1:

#ifndef mywidget_h

#define mywidget_h#include

#include

#include

"houerli.h

"class mywidget : public

qwidget

;#endif

//mywidget_h

#include "

mywidget.h

"mywidget::mywidget(qwidget *parent)

: qwidget(parent)

void

mywidget::openthewindow()

對於func2

相比func1,func2稍微複雜一些,但只要我們能捋清邏輯,絕非難事。

功能上,我們是點選了子窗體上的乙個按鈕,實現了主視窗顯現的效果,看似是按鈕傳送了新號,實則不然。從主窗體類的**實現通盤考慮,子窗體類的變數hwindow作為主窗體類mywidget的私有屬性出現

從設計實現的角度來看:mywidget來呼叫類的成員函式處理子窗體類houerli發來的訊號,從而實現子窗體變數hwindow的開啟和關閉乃為上策,而不是直接跟子窗體上的乙個按鈕往來什麼訊號(如果mywidget上再定義乙個子窗體上的按鈕類變數,無疑是類設計實現上的乙個噩夢!)

綜上所述,我們的思路變得清晰起來:子窗體上的按鈕,作為觸發子窗體向父窗體傳送訊號的「扳機」

#ifndef houerli_h

#define houerli_h#include

#include

class houerli : public

qwidget

;#endif

//houerli_h

#include "

houerli.h

"#include

houerli::houerli(qwidget *parent) : qwidget(parent)

void

houerli::sendsignal()

void

接下來,理所應當的,我們要定義主窗體(mywidget)如何處理訊號

#ifndef mywidget_h

#define mywidget_h#include

#include

#include

"houerli.h

"class mywidget : public

qwidget

;

connect(&hwindow,&houerli::signaltocpc,this,&mywidget::recvsignal);

void

mywidget::recvsignal()

整體**

專案檔案目錄結構

DAY2 訊號與槽,自定義槽,子視窗,自定義訊號

訊號和槽 connect b1 qpushbutton pressed,this mainwidget close 引數 作用 b1 訊號發出者 指標型別 qpushbutton pressed 處理的訊號 類名 訊號 this 訊號接收者 mainwidget close 槽函式 訊號處理函式 接...

一 自定義訊號槽

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 reade...

python 舉一例區別自定義物件與固有物件

如下 a abcdefg b a b ijk print a print a is b print class a def init self,a a.a a a a abcdefg b a b.a ijk print a.a print a is b結果如下 abcdefg false abcde...