首页 > 其他分享 >关于QMetaObject::invokeMethod的测试

关于QMetaObject::invokeMethod的测试

时间:2023-04-11 14:56:20浏览次数:37  
标签:0x20a8f327390 0x20a8f310140 void MCcrt 线程 测试 invokeMethod QMetaObject QThread

此函数可以用来在子线程中委托主线程执行特定函数。QMetaObject::invokeMethod默认在主线程中执行函数,除非指定连接方式为Qt::DirectConnection。以下是测试用的代码和输出结果。头文件:

class MCcrt : public QThread
{
    Q_OBJECT

public:
    MCcrt(QObject* parent = 0) : QThread(parent) {}
    ~MCcrt() override = default;

private:
    void run() override;

private slots:
    void func(int a);
};

CPP文件:

void MCcrt::run()
{
    while (1)
    {
        qDebug() << u8"子线程:" << QThread::currentThread();
        QMetaObject::invokeMethod(this, "func", Qt::AutoConnection, Q_ARG(int, 1));
        QMetaObject::invokeMethod(this, "func", Qt::DirectConnection, Q_ARG(int, 2));
        QMetaObject::invokeMethod(this, "func", Qt::QueuedConnection, Q_ARG(int, 3));
        QMetaObject::invokeMethod(this, "func", Qt::BlockingQueuedConnection, Q_ARG(int, 4));
        msleep(10000);
    }
}

void MCcrt::func(int a)
{
    qDebug() << u8"我的线程:" << a << QThread::currentThread();
}

<主窗口构造函数>()
{
    ui.setupUi(this);
    qDebug() << u8"主线程:" << QThread::currentThread();
    MCcrt* obj = new MCcrt;
    obj->start();
}

输出文本为:

主线程: QThread(0x20a8f310140)
子线程: MCcrt(0x20a8f327390)
我的线程: 2 MCcrt(0x20a8f327390)
我的线程: 1 QThread(0x20a8f310140)
我的线程: 3 QThread(0x20a8f310140)
我的线程: 4 QThread(0x20a8f310140)
子线程: MCcrt(0x20a8f327390)
我的线程: 2 MCcrt(0x20a8f327390)
我的线程: 1 QThread(0x20a8f310140)
我的线程: 3 QThread(0x20a8f310140)
我的线程: 4 QThread(0x20a8f310140)

 

标签:0x20a8f327390,0x20a8f310140,void,MCcrt,线程,测试,invokeMethod,QMetaObject,QThread
From: https://www.cnblogs.com/mengxiangdu/p/17306199.html

相关文章

  • 测试直播伴侣和OBS对透明度的支持哪个好?
     测试直播伴侣和OBS对透明度的支持哪个好?抖音无人直播,用抖音弹幕助手测试直播伴侣和OBS对透明度的支持哪个好?抖音无人直播,用抖音弹幕助手 ​测试地址1​测试地址2 ......
  • 安全测试前置实践1-白盒&黑盒扫描
    作者:京东物流 陈维一、引言G.J.Myers在《软件测试的艺术》中提出:从心理学角度来说,测试是一个为了寻找错误而运行程序的过程。那么安全测试则是一个寻找系统潜在安全问题的过程,通过测试手段发现系统中可能存在的安全问题和风险,分析并进行优化,保障系统的安全质量。从应用安全维度出......
  • Jmeter在linux环境下会出现 html测试报告 响应结果为空得问题
    1.在jmeter_home/bin/jmeter.properties文件中修改配置jmeter.save.saveservice.response_data=truejmeter.save.saveservice.samplerData=true 2.在user.properties文件中追加配置jmeter.save.saveservice.output_format=xmljmeter.save.saveservice.response_data=truej......
  • 测试端口连通性
    下面以Linux平台为例,讲述测试TCP和UDP端口的方法。有两个命令可以用来测试端口,一个是telnet,一个是nc,但telnet只能用于测试TCP端口,而nc即可用于测试TCP端口也可用来测试UDP端口。【telnet命令的用法】telnetIPport例如:[root@localhost]#telnet192.168.0.18120060Trying192.1......
  • 浅析pcba测试
      说起PCB大家都很熟悉,那大家知道什么是PCBA吗?它是指将PCB板进行加工,支撑一个成品线路板。而PCBA测试就是对线路板进行一个功能测试、电路测试。那么为什么一定要对PAB板进行检测呢?它有什么重要性?安徽英特丽小编带大家分析一下 PCBA加工的过程十分复杂,其中包括PCB板制作、......
  • AB测试案例
    A/B测试案例DataSource:https://www.kaggle.com/datasets/wangabby/ab-test-data参考视频link:https://www.bilibili.com/video/BV1XM411x7Ha/?p=1&vd_source=8182a5a873e34eef26f6efc04f235dd5PS:数据并非一致,且采取的所有数据而非抽样1.背景​ 公司期待通过推出新页面来......
  • 课上测试-科技政策查询系统(实现分页显示和模糊查询)
    今天的软工课上,老师给我们布置了课堂小测试,要求我们做一个简单的科技政策查询系统,具体要能实现模糊查询和分页显示。老师没有要求我们完成数据结构和树形结构分类,总体还是比较容易的。 代码请见我下一篇博客:https://www.cnblogs.com/rsy-bxf150/p/17304267.html题目要......
  • 课上测试-实现分页显示和模糊查询(代码部分)
    今天的软工课上,老师给我们布置了课堂小测试,要求我们做一个简单的科技政策查询系统,具体要能实现模糊查询和分页显示。这里展示我实现的代码。目前实现了基本功能,还有点小不完善,之后再改一改吧。Query.javapackagemain;importdao.Bean;importdatas.DB;importj......
  • swagger测试的使用
    pom文件的配置<!--swagger依赖--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId......
  • 【性能测试】03基础知识篇-测试指标
    本文介绍性能测试的各种测试指标。系统性能指标ResponseTime:RT交易响应时间定义及解释响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。在性能检测中一般以压力发起端至被压测服务器返回处理结果的时间为计量,单位......