真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【Qt學(xué)習(xí)筆記】4.事件處理

首先解釋幾個(gè)名詞

創(chuàng)新互聯(lián)企業(yè)建站,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁(yè)設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營(yíng)經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對(duì)于做網(wǎng)站、成都做網(wǎng)站中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁(yè)中充分展現(xiàn),通過(guò)對(duì)客戶行業(yè)精準(zhǔn)市場(chǎng)調(diào)研,為客戶提供的解決方案。

事件:

Qt中的事件,主要指用戶輸入事件,比如:點(diǎn)擊一個(gè)按鈕、選中復(fù)選框、按下回車等。

事件處理:

當(dāng)事件發(fā)生時(shí),程序做出的反應(yīng),比如:當(dāng)點(diǎn)擊顯示按鈕時(shí),程序彈出一個(gè)對(duì)話框,或產(chǎn)生其他相應(yīng)。

信號(hào)和槽:

Qt中的事件處理機(jī)制叫做信號(hào)和槽 (signal & slot)

其理論模型為:

對(duì)象 a 中有一個(gè)信號(hào)signal:XXX(代表一個(gè)事件)

對(duì)象 b 中有一個(gè)槽slot:YYY(事件處理函數(shù))

事先把它們連接起來(lái), connect(a, XXX, b, YYY);

然后,當(dāng) a 中事件發(fā)生時(shí),b中的處理函數(shù)就會(huì)被調(diào)用。

(每一種界面開(kāi)發(fā)庫(kù)都有一個(gè)事件處理機(jī)制,并且,事件處理總是脫離C++語(yǔ)法之外)

一、實(shí)現(xiàn)事件處理的過(guò)程:

1、查文檔,找到相應(yīng)事件產(chǎn)生的函數(shù)原型(或者說(shuō)產(chǎn)生信號(hào)的函數(shù)signal)

2、聲明、定義一個(gè)信號(hào)處理函數(shù)(槽),參數(shù)形式應(yīng)該和signal的參數(shù)形式一致

3、將信號(hào)和槽用connect函數(shù)關(guān)聯(lián)

前兩步的示例如下:

//.h文件
private slots:
    int OnShowClicked(bool checked);
   
//.cpp文件
int XXX::OnShowClicked(bool checked)
{
    retunr 0;
}

接下來(lái)做一個(gè)練習(xí):

設(shè)計(jì)如下界面,并實(shí)現(xiàn)當(dāng)點(diǎn)擊按鈕后,觸發(fā)自己定義的事件,使下方的文本框顯示一行內(nèi)容

【Qt學(xué)習(xí)筆記】4.事件處理

實(shí)現(xiàn)代碼如下:

//.h
class Test4_1a_11_29 : public QMainWindow
{
    Q_OBJECT

public:
    Test4_1a_11_29(QWidget *parent = Q_NULLPTR);

private slots:
	int OnShowClicked(bool checked);

private:
    Ui::Test4_1a_11_29Class ui;
};


//.cpp
Test4_1a_11_29::Test4_1a_11_29(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	connect(ui.btnShow, SIGNAL(clicked(bool)), this, SLOT(OnShowClicked(bool)));
	//connect的參數(shù) : 對(duì)象QObject* A  ,   A的信號(hào)(SIGNAL), 對(duì)象QObject* B  , B的槽(SLOT)    A為產(chǎn)生信號(hào)的對(duì)象, B為處理信號(hào)的對(duì)象
}

int Test4_1a_11_29::OnShowClicked(bool checked)
{
	ui.QPlainTextEdit1->setPlainText("change world");
	return 0;
}

二、connect的注意要點(diǎn)

響應(yīng)函數(shù)(槽)要用slot關(guān)鍵字修飾

參數(shù)SIGNAL和SLOT函數(shù)都要大寫

clicked和SLOT函數(shù)中的參數(shù),注意只有類型

通過(guò)返回值判斷connect()函數(shù)執(zhí)行是否成功。

但我發(fā)現(xiàn),只能用false判斷,而不論connect() == true 還是 true == connect()的形式都是無(wú)法通過(guò)的,而如果非要用true,則需要對(duì)connect的返回值進(jìn)行一次強(qiáng)制轉(zhuǎn)換:

assert(true == (bool)connect(ui.btnShow, SIGNAL(clicked(bool)), this, SLOT(OnShowClicked(bool))));

【Qt學(xué)習(xí)筆記】4.事件處理

原因待探查

尾巴:

檢查connect的返回值,如果出錯(cuò),可以用qDebug()函數(shù)打印調(diào)試信息,但用這種方法打印的提示信息只有在調(diào)試狀態(tài)下可見(jiàn)。

既然這樣,用assert()是不是更方便呢?


當(dāng)前標(biāo)題:【Qt學(xué)習(xí)筆記】4.事件處理
URL標(biāo)題:http://weahome.cn/article/pcjpsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部