自定义插槽的使用


我想在子线程中来控制主线程的UI控件,但是程序报错,所以我们可以利用信号和插槽来自己触发一个事件。

定义信号量

首先我们定义信号量

// qt型号量
signals:
// 连接失败的信号量
void closeSign();

要使用信号量就必须要有这个宏

信号量只需要定义,不需要我们去实现

定义插槽函数

//  这里我们定义了一个slots 插槽,这个用于UI界面与程序进行交互
private slots:
    // 连接失败触发的事件(这个是触发事件)
    void connectFail();

调用信号量会自动触发插槽函数,这个函数里面可以写一些操作线程的函数

绑定插槽函数和信号量

//  connect函数,这个是自定义的信号和槽
    //  第一个参数数发送方,这里一般是窗口对象,我们这里就是自己本身
    //  第二个参数是信号量
    //  第三个参数接收方
    // 第四个参数是插槽函数
    // 使用emit closeSign();来触发信号,然后自动调用connectFail()这个插槽函数
    connect(this, SIGNAL(closeSign()), this, SLOT(connectFail()));

注意,如果是其他窗口触发信号量的话,那么我们就需要把第一个this改成(&其他窗口对象)

触发信号

// 发送连接失败的信号
emit closeSign();

文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录