一、QT 知識學(xué)習(xí)https://qtguide.ustclug.org/

1..pro鏈接庫

2.QString:QString字符串操作


QTextStream配合字符串使用

賦值運算符 = 的隱式共享(Implicit Sharing
二、☆槽函數(shù) slots

文件結(jié)構(gòu)
槽函數(shù)使用步驟:
1)
widget.ui: 在控件欄拖入PushButton2)
widget.h:
public slots: //槽函數(shù)聲明標(biāo)志
void FoodIsComing(); //槽函數(shù)
3)Widget.cpp:
//#1.槽函數(shù)定義代碼,與普通成員函數(shù)類似
void Widget::FoodIsComing()
{
QMessageBox::information(this, tr("送餐"), tr("叮咚!外賣已送達"));
}
//#2.添加關(guān)聯(lián)代碼,必須放在 setupUi 函數(shù)之后
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(FoodIsComing()));

☆connect()函數(shù)定義
1 自動關(guān)聯(lián):
優(yōu)點:不需要手動編寫 connect 函數(shù),通過自動命名槽函數(shù)的方式來編寫代碼。自動關(guān)聯(lián)的要求是槽函數(shù)根據(jù)源頭的對象名(指針)和其信號名稱來命名,元對象系統(tǒng)可以實現(xiàn)剩下的自動 connect 功能。
缺點:自動關(guān)聯(lián)一般用于一個窗體之內(nèi)的控件關(guān)聯(lián),其他很多情況都是需要手動編寫 connect 函數(shù)的,所以學(xué)習(xí) connect 函數(shù)的語法句式是必須的。
第二步是由 uic 和 moc 等工具自動完成的,在 Debug 文件夾里可以找到 ui_widget.h,最關(guān)鍵的就是 setupUi 函數(shù)末尾一句QMetaObject::connectSlotsByName(Widget);。
2 手動關(guān)聯(lián):
自動關(guān)聯(lián)一般用于一個窗體之內(nèi)的控件關(guān)聯(lián),其他很多情況都是需要手動編寫 connect 函數(shù)的,所以學(xué)習(xí) connect 函數(shù)的語法句式是必須的。
3 文本同步顯示:

源頭控件 lineEdit 信號和接收端控件 label 槽函數(shù) 均是 Qt 庫自帶的
4 自定義信號和槽:
emit SendMsg( tr("This is the message!") );
emit是發(fā)信號的關(guān)鍵字,然后接下來就與調(diào)用函數(shù)是一樣的格式,SendMsg里面放置我們想傳遞的字符串參數(shù)
發(fā)送自定義SendMsg信號
//③關(guān)聯(lián),信號里的字符串參數(shù)會自動傳遞給槽函數(shù)
QObject::connect(&w, SIGNAL(SendMsg(QString)), &s, SLOT(RecvMsg(QString)));

自定義信號和槽 運行流程
復(fù)雜多窗口的界面程序,在多個窗體對象之間就可以用 上圖示范的流程,來進行通信、傳遞數(shù)據(jù)。
b. 關(guān)聯(lián)按鈕信號到自定義信號,再關(guān)聯(lián)到槽函數(shù)
//showmsg.cpp: 關(guān)聯(lián)按鈕信號到自定義的信號
connect(ui->pushButton, SIGNAL(clicked()), this, SIGNAL(SendVoid()));
//main.cpp: ③關(guān)聯(lián)源頭的信號和接收端的槽函數(shù)
QObject::connect(&w, SIGNAL(SendVoid()), &s, SLOT(RecvVoid()));


