Qt总线信号与插槽的使用方法

admin2022-03-01编程日志2663

信号和槽用于对象之间的通信。信号和插槽机制是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");
    }
}

image.png

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。