案例及自定義槽函式(1)
訊號和槽:在 qt 中處理介面各個元件的互動操作時的一種機制。
signal:訊號就是在特定情況下被發射的事件,例如硬體中的中斷,按鍵按下出發乙個中斷,這個觸發機制可以是上公升沿或下降沿,qt中也是這種機制,按下,或鬆開按鍵會傳送響應的訊號。
gui 程式設計的主要內容就是對介面上各元件的訊號的響應,只需要知道什麼情況下發射哪些訊號,合理地去響應和處理這些訊號就可以了。
slot:槽就是對訊號響應的函式。槽就是乙個函式,與一般的c++函式是一樣的,可以定義在類的任何部分(public、private 或 protected),可以具有任何引數,也可以被直接呼叫。槽函式與一般的函式不同的是:槽函式可以與乙個訊號關聯,當訊號被發射時,關聯的槽函式被自動執行。(模擬為硬體中的中斷函式,當按鍵按下(訊號發射),觸發中斷進入中斷處理函式(進入槽函式,處理響應的事件))
實現內容為,主視窗和子視窗的相互切換,通過相應的按鍵訊號實現切換。
首先要新建乙個qt專案,基於qwidget基類。
如上圖,基類base class下拉選擇qwidget,子類命名為mywidget,下面會自動生成相應的.cpp和.**件。然後在相應的框架中實現功能。
主視窗功能實現:
(1)在子類mywidget類中定義相應的功能和槽函式
**如下:
mywidget.h內容:
#ifndef mywidget_h
#define mywidget_h
#include
#include
#include
#include
"sbuwidget.h"
//包含子視窗標頭檔案
class
mywidget
:public qwidget
;#endif
// mywidget_h
mywidget.cpp內容
#include
"mywidget.h"
#include
#include
mywidget::
mywidget
(qwidget *parent)
//建構函式
:qwidget
(parent)
//初始化自定義槽函式
void mywidget::
myslot()
void mywidget::
mychangesbu()
void mywidget::
dealsbu1()
mywidget::
~mywidget()
子視窗實現
sbuwidget.h內容
#ifndef sbuwidget_h
#define sbuwidget_h
#include
#include
class
sbuwidget
:public qwidget
;#endif
// sbuwidget_h
sbuwidget.cpp內容
#include
"sbuwidget.h"
#include
"mywidget.h"
sbuwidget::
sbuwidget
(qwidget *parent)
:qwidget
(parent)
void sbuwidget::
sendslot()
主視窗類初始化(1)子視窗類的乙個例項化物件作為主視窗的類。
(2)設定相應的按鍵,以及槽函式的宣告
(3)在主視窗類的建構函式中實現對子視窗物件的呼叫,實現子視窗的顯示與關閉。
子視窗類的初始化以上只不過是類的初始化,還需要例項化具體的視窗物件,以及顯示。(1)設定相應的按鍵,以及槽函式。
(2)設定槽函式為傳送訊號給主視窗,通過主視窗類構造函式呼叫相應的槽函式,實現主視窗的顯示與關閉
main.cpp 內容
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 核心特性...
一 自定義訊號槽
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...