QT學習筆記(二)

2021-10-16 23:17:52 字數 2269 閱讀 3450

lambda表示式

昨天已經把自定訊號和槽寫好了,今天需要把訊號設定為帶參的形式。

1、在teacher.h中加入同名帶參函式hungry(qstring foodname)

#ifndef teacher_h

#define teacher_h

#include

class

teacher

:public qobject

;#endif

// teacher_h

2、在student.h與student.cpp中也宣告並自定義同名帶參函式treat(qstring foodname);

#ifndef student_h

#define student_h

#include

class

student

:public qobject

;#endif

// student_h

#include

"student.h"

#include

student::

student

(qobject *parent)

:qobject

(parent)

void student::

treat()

void student::

treat

(qstring foodname)

3、在主視窗.cpp檔案中測試,emit用於觸發訊號。

#include

"mainwindow.h"

#include

"ui_mainwindow.h"

#include

#include

"mybutton.h"

mainwindow::

mainwindow

(qwidget *parent)

:qmainwindow

(parent),ui

(new ui::mainwindow)

mainwindow::

~mainwindow()

void mainwindow::

overclass()

執行控制台列印以下輸出

小結:訊號和槽函式發生過載時,需先定義函式指標指向明確的函式位址,再呼叫connect連線訊號和槽,否則編譯無法通過,因為編譯器不知道你傳送訊號的函式是哪乙個。qstring 轉為 char *的方式為

qstring.toutf8().data(),若不轉換型別,控制台輸出的是帶雙引號的字串。

訊號連線按鈕

定義乙個新的qpushbuton按鈕,再將其連線觸發訊號函式overclass

qpushbutton * newbtn =

newqpushbutton

("下課"

,this);

newbtn-

>

move

(100

,400);

connect

(newbtn,

&qpushbutton::clicked,

this

,&mainwindow::overclass)

;

訊號連線訊號

先將訊號函式位址改為之前無參的那個,因為訊號函式的引數必須大於或等於槽函式引數,且引數型別必須一一對應。void (teacher:: *teachersignal)(void) = &teacher::hungry;

再做連線connect(newbtn,&qpushbutton::clicked,te,teachersignal);

disconnect斷開訊號

disconnect(newbtn,&qpushbutton::clicked,te,teachersignal);

形式:{}

是lambda表示式的識別符號

= 值傳遞

& 引用傳遞

() 引數

{} 實現體

mutable 修飾值傳遞變數 ,可以修改拷貝的資料,改變不了本體

()->int 返回值(此例為int型別)

Qt 學習筆記 二

對於這樣的共享者,我心存感激,但是我不能直接把內容直接貼到我的blog中,這樣是對原創blog的一種不敬。我乙個例子乙個例子的跟著,一直到 自定義signal 與slot的時候出現問題了。我編譯的時候code block 出現這樣的錯誤 c cproject lession3 model.h 3 e...

Qt學習筆記之二

如下圖所示 新版本的qt gui 被包含到qtwidget中去了。可以在新建工程的pro檔案中新增包含項 qt coreguiwidgets 之前只有core 和 gui 可以在後面新增widgets 這也是為什麼有些朋友找不到標頭檔案比如說 等等 如下圖所示 再檢視qtwidgets資料夾可以發現...

Qt學習筆記

1.參考資料 1 2 3 4 5 6 2.faq 2.1.qt creator 2.1.1.xp下用qt creator編譯自帶例子mdi sdi 當不勾選projects build settings build environment的 clear system environment 時,編譯...