文章目錄
- Qt編程技巧總結篇(2)-信號-槽-多線程(一)
- 信號與槽
- 實例與應用
- 小結
Qt編程技巧總結篇(2)-信號-槽-多線程(一)
??最近學習信號與槽以及多線程,非常有技術含量,可以適當好好思考一下,這篇主要是信號與槽,其實也包括子類與父類之間的一些關系,也和子線程與主線程有關系,我們要盡量將函數以及復雜的流程放在子線程中,主線程要盡量的明晰、簡潔,好了,開整~
信號與槽
信號-signals:發出去的函數,有默認(可以用哦!),當然主要還是自己去編寫,(emit-發射)。
槽-slots:接收信號,承接信號發出的內容。
實例與應用
下面的例子以TCPsocket為例,這里講個TCP狀態的返回,很有趣!
子線程.h 文件中,定義信號函數
signals:void TCPStatusS(QAbstractSocket::SocketState);
子線程.cpp 文件中,發射信號函數
void coWorker::STLConnected(QString IP, int port)
{STLsocket->connectToHost(IP,qint16(port));emit TCPStatusS(STLsocket->state());
}
主線程.h 文件中,定義槽函數
public Q_SLOTS:void onconnected(QAbstractSocket::SocketState socketStatue);
主線程.cpp 文件中,子類實例為worker
- 連接槽函數與信號函數
// 通過發信號令不同類之間通信connect(worker,&coWorker::TCPStatusS,this,&MainWindow::onconnected);
- 并解釋槽函數
void MainWindow::onconnected(QAbstractSocket::SocketState socketStatue)
{switch (socketStatue){case QAbstractSocket::ConnectingState:{ui->label_Text->setText("Connected successfully!");break;}case QAbstractSocket::UnconnectedState:{ui->label_Text->setText("Disconnected already!");}}
}
小結
??抓緊時間學習,好多概念非常的抽象,必須自己靜下來想一想、敲一敲才理解得更深刻,加油。