惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
博客园 - 司徒正美
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
月光博客
月光博客
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
雷峰网
雷峰网
博客园 - 叶小钗
量子位
IT之家
IT之家

博客园 - 上位机

wkhtmltopdf chart.js 浏览器打开html是正常的,输出pdf时,图表时无法显示问题 opencv 4.x 静态编译后 录像视频保存为h264 vtkImageData的GetScalarPointer参数范围和SetExtent的范围相关 Qt 5 QFormLayout 隐藏一行 或 重新布局 opencv imshow 大图片显示,拖动显示 Qt QTtoolButton 鼠标移动到按钮上时,弹出菜单后,按钮的hover状态无法恢复的问题 std的map或者set中,比较浮点类型二维三维数据 Qt 子窗口 隐藏标题栏的图标,在任务栏上的不显示 windbg 调试 c++ std::exception VS C++ 出现debug assertion failed弹框,怎么定位代码 QTabWidget的高度取决于当前选项卡的高度 Qt tr 无法翻译 Qt 窗口随控件变换大小 vtkCellLocator IntersectWithLine 返回不是最近的交点 设置QToolBar的Action图标之间的间隔 Visual Studio 2017 rc 资源文件 预处理 宏 无效 Qt No Target Architecture vtkDelaunay2D 错误 Edge not recovered, polygon fill suspect VTK vtkAssembly 拾取
Qt 在线程中invokeMethod采用QueuedConnection模式,调用带指...
上位机 · 2023-08-04 · via 博客园 - 上位机

widgetObject有操函数Test:

void Test(int *v);

在线程中调用Test,会被忽略,实际不会调用。

QMetaObject::invokeMethod(widgetObject, "Test", Qt::QueuedConnection, Q_ARG(int*,&v));

下面是网上找的理由: 

1.在同一个线程中
当信号和槽都在同一个线程中时,值传递参数和引用传递参数有区别: 值传递会复制对象;(测试时,打印传递前后的地址不同) 引用传递不会复制对象;(测试时,打印传递前后的地址相同)

不在同一个线程中
当信号和槽不在同一个线程中时,分两种情况。 1、connect时使用AutoConnection(跨线程默认是QueuedConnection):值传递参数和引用传递参数没有区别,都会复制对象;(测试时,打印传递前后的地址不同) 2、connect时使用DirectConnection,测试结果和在同一线程中的结果相同。

2.emit发射信号 在信号中以&引用作为参数
以引用作为参数一定要注意,在第二次发射信号的时候,引用的实体已经不存在了。

所以,如果想让每一次发射的信号中参数的值都保存下来,不能是&引用和*指针作为参数,而应该使用值传递。

这样每次发射信号的值都能够保存下来。

3.当我们传递一些自定义类型,比如类和结构体的时候,传递可能会出错,自己亲身体会,看到自己的信号槽已经关联了但是信号发出之后根本不会进入槽函数,因为这个信号槽是无效的,因为你自己定义的类型没有注册的话,信号槽机制将无法识别,解决办法就是进行如下操作进行注册

方法一:先把指针封装到struct中,在使用qRegisterMetaType注册struct类型,来传递

方法二:懒人办法,把指针转地址换为long long,通过long long参数传递