Qt用emit隨時隨地發送信號
02-26
本文作者林中楓,首發於知乎,未經許可禁止轉載。
發送信號並不是一定要等著事件觸發才能發送信號,從而響應槽函數,只不過在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:
- 歡迎關注
作者知乎賬號:林中楓
作者知乎專欄:
Qt
推薦閱讀:
※Microsoft Visual C++ Redistributable這種東西為什麼不合併成一個?
※在c中為什麼經常看到for( ; ; )這樣的語句,而不直接用while(1)?
※應該以什麼心態和標準來學《 c++primer 》和 c++ ?
※對於 C++ 的疑惑?