Qt自定义信号槽
前言
在使用Qt開發中,有時候在兩個線程之間進行數據的傳輸,比如使用一個線程往另一個線程傳輸一個OpenCV的Mat數據或者一個Rect的坐標,那么最好是自已定義一個信號,然后在另一個線程定義一個槽來接收這個信號。
一.信號與槽
1.在Qt里面定義的信號是以函數形式聲明的,返回類型是void,傳入的參數為要發送出去的數據,前面有signals關鍵字標記。
signals:void getStr(QString &str);//定義一個可以發送str的信號2.信號槽繼承于QObject類,頭文件中必須有Q_OBJECT的類聲明,否則會報錯。
3.槽函數跟Qt正常的槽函數一樣,可以用 public、private、protected 修飾,槽的參數不能有缺省值。
4.發射擊信號(emit)是在程序要傳出數據的位置使用。
5.信號和槽是一種松耦合機制,也可以說是一種分布式機制,信號廣播出去,槽自然會訂閱接收。
6.如果一個信號與多個槽相關連的話,那么,當這個信號被發射時,與之相關的槽被激活的順序是隨機的。
二、代碼
1.發射信號代碼
void Dialog::on_emitBtn_clicked() {QString str = ui->EmitLineEdit->text();emit getStr(str); }
2.完整代碼看上傳的資源。
https://download.csdn.net/download/matt45m/12049993
總結
- 上一篇: C++对中文字符的处理
- 下一篇: QT多界面之间数据传输