Qt用emit隨時隨地發送信號

本文作者林中楓,首發於知乎,未經許可禁止轉載。

發送信號並不是一定要等著事件觸發才能發送信號,從而響應槽函數,只不過在Qt這個龐大的系統中,基本的默認事件已經有內在機制和Qt的信號連接起來了,所以觸發事件就會發送信號,比如點擊按鈕,就會自動發送clicked()信號,而emit能讓我們隨時隨地發送信號。

  • 示例演示

首先繪製下UI:

接下來就是emit的使用,代碼如下:

void MainWindow::on_btn1_clicked(){ emit ui->btn2->clicked();}void MainWindow::on_btn2_clicked(){ QMessageBox::information(this,"debug","btn2 clicked!");}

代碼非常簡單,意思也很明白,當btn1被點擊時發送btn2被點擊的信號,從而響應btn2的槽函數,從而實現btn2沒有觸發點擊事件而響應了相應的槽函數的效果。

  • 運行結果

點擊btn1:

點擊btn2:

  • 歡迎關注

作者知乎賬號:林中楓

作者知乎專欄:

Qtzhuanlan.zhihu.com圖標
推薦閱讀:

Microsoft Visual C++ Redistributable這種東西為什麼不合併成一個?
在c中為什麼經常看到for( ; ; )這樣的語句,而不直接用while(1)?
應該以什麼心態和標準來學《 c++primer 》和 c++ ?
對於 C++ 的疑惑?

TAG:QtC開發框架 | C | 框架 |