Qt总线信号与插槽的使用方法
信号和槽用于对象之间的通信。信号和插槽机制是Qt的核心功能。
下面用一个很简单的流程来介绍如何用总线信号来处理信号和槽,该流程大致为创建一个Tcp服务器,链接成功后在Ui界面上显示连接地址
# MainWindow.CPP
在主Windows界面中,connect信号。
MainWindow::MainWindow() { auto signalStation = SignalStation::GetInstance(); connect(signalStation, &SignalStation::sig_OnTcpStarted, this, [=](const QString &addr) { setWindowTitle(addr); }); }
# SignalStation.hpp
定义信号
class SignalStation : public QObject { Q_OBJECT public: static SignalStation *GetInstance(); signals: void sig_OnTcpStarted(const QString &addr); private: SignalStation() = default; };
# TcpServer.cpp
在连接成功后,抛出事件
{ auto *srv = new QTcpServer; if(srv->listen(QHostAddress("0.0.0.0"), 1234)){ emit SignalStation::GetInstance()->sig_OnTcpStarted("0.0.0.0:1234"); } }