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!");
    }
    }
}

小结

  抓紧时间学习,好多概念非常的抽象,必须自己静下来想一想、敲一敲才理解得更深刻,加油。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值