美文网首页
(三)QT专题-槽的返回值调用;

(三)QT专题-槽的返回值调用;

作者: GoodTekken | 来源:发表于2023-02-09 08:26 被阅读0次

槽的调用也可有返回值:
分为同步调用(Synchronous)和异步调用(Asynchronous)
同步调用:等待函数执行完成后,返回值。
异步调用:未等函数执行完成,马上有返回值。

①信号发送者和接受者在同一个线程,也就是直接连接,参数为Qt::DirectConnection。此时为同步调用,信号发送之后会等待槽函数的执行,可接收到返回值。

②当信号发送者和接受者不在同一个线程,也就是队列连接,参数为Qt::QueuedConnection时。此时为异步调用,信号发出之后,把事件交给事件队列,不等待槽函数的执行直接返回,不能接收到返回值。

③当信号的发送者和接受者不在同一个线程时,可以使用Qt::BlockingQueuedConnection参数,该参数会阻塞信号发送者所在线程,直到槽函数执行完成之后才会往下执行,可以接收到返回值。需要注意:如果信号的发送者和接受者在一个线程,使用该参数会造成程序死锁。

MyDemo.h:

#ifndef MYDEMO_H
#define MYDEMO_H

#include <QObject>
#include <QDebug>

class MyDemo : public QObject
{
    Q_OBJECT;

public:
    MyDemo(QObject *parent = nullptr);

    void demoTest(void);

signals:
    int mydemoSignal(int value);

public slots:
    int mydemoSlot(int value);
};
#endif // MYDEMO_H

MyDemo.cpp

#include "MyDemo.h"

MyDemo::MyDemo(QObject *parent):QObject(parent)
{
    connect(this,SIGNAL(mydemoSignal(int)),this,SLOT(mydemoSlot(int)));
}

void MyDemo::demoTest(void)
{
    connect(this,SIGNAL(mydemoSignal(int)),this,SLOT(mydemoSlot(int)),Qt::DirectConnection); //Synchronous
    //connect(this,SIGNAL(mydemoSignal(int)),this,SLOT(mydemoSlot(int)),Qt::QueuedConnection);//Asynchronous
    int result = emit mydemoSignal(30);
    qDebug()<<"demoTest return"<<result;
}

int MyDemo::mydemoSlot(int value)
{
    qDebug()<<"mydemoSlot"<<value;
    return value*2;
}

相关文章

  • Qt信号槽原理(调用)

    接上一章链接部分,继续讲信号槽是如何调用的首先看看信号是如何触发的,一般都是这么写:emit sender.tes...

  • Qt5 - 3. 自定义信号&槽

    信号&槽是 Qt 的核心特性之一,Qt 允许我们自定义信号&槽,因此我们可以在 Qt 程序中定义我们自己的信号&槽...

  • Qt 中调用 LIB 、DLL 等

    Qt 中调用 LIB 、DLL 等 标签(空格分隔): Qt&C++ lib、dll 的调用分为隐式调用和显式调用...

  • 信号与槽

    在Qt Designer中设置信号与槽 信号(signal) 槽(slot) 是Qt的核心机制,也是PyQt的核心...

  • Qt信号槽(signal and slot)机制初识

    写在前面 本文主要介绍Qt信号槽(signal and slot)机制,介绍Qt信号槽机制的含义,用途以及如何简单...

  • #关于函数

    一、无参数 无返回值 二、有参数 无返回值 三、无参数 有返回值 四、有参数 有返回值 五、递归函数 自己调用自...

  • Qt高级——Qt信号槽机制源码解析

    引自:https://blog.51cto.com/9291927/2070398 Qt高级——Qt信号槽机制源码...

  • signal and slot

    信号与槽,是Qt的核心机制,pyqt 是python对Qt的完全封装,因此,信号与槽也是pyqt的核心机制。 通...

  • Qt开发系列3——Qt中的核心技术1

    简介 这里简单介绍Qt的一些核心机制,具体参见Qt文档。 主要包含内容: Qt的信号和槽,以及事件机制 Qt Ob...

  • 基于VS下的Qt 界面设计

    Vs下调用Qt gui 操作新建项目——Qt GUI Application——确定后 next —— fini...

网友评论

      本文标题:(三)QT专题-槽的返回值调用;

      本文链接:https://www.haomeiwen.com/subject/dovahdtx.html