Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用qt中的信号和槽传递参数

使用qt中的信号和槽传递参数
EN

Stack Overflow用户
提问于 2013-12-18 09:54:20
回答 2查看 598关注 0票数 1

我是qt的新手,我有一个问题。

我想要连接信号和插槽。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QObject::connect(_Requests, SIGNAL(newJobsAvailable(const MyClass &)), _Object, SLOT(doSend(const MyClass &)));

qt会抱怨无法对MyClass等进行排队。

如何正确地声明它?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
qRegisterMetaType<const MyClass &>("const MyClass&");
EN

回答 2

Stack Overflow用户

发布于 2013-12-18 10:14:46

如果Qt抱怨无法对您的类进行排队,这意味着Qt无法复制并放入您的类的QVariant对象中。

这只意味着只有直接连接才能工作。什么意思?如果您在connect中使用最后一个参数的默认值,那么线程之间的连接将无法工作!将connect的最后一个参数设置为Qt::DirectConnection应该会使警告消失,值Qt::QueuedConnection将根本不起作用。

另一种修复方法是注册您的类型。但是你应该在没有任何限定符的情况下这样做!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
qRegisterMetaType<MyClass>("MyClass");

如果你正在使用Qt5,那么可以考虑在MyClass中使用Q_GADGET宏(只需将其放在类定义的开头,并在pro文件的头文件中添加header )。

票数 1
EN

Stack Overflow用户

发布于 2013-12-18 10:25:01

您需要确保MyClass具有公共默认构造函数和复制构造函数。因为对象可能会被复制,即使您使用const ref声明了信号和插槽。

如果出于某种原因,复制是不可能的,则按照棘轮的建议传递指针

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20654771

复制
相关文章
Qt中的信号槽
类似于一些其它的编程语言或框架中的回调机制,信号槽是Qt基于C++语法新增的特性,使用起来非常方便,可以完成不同对象之间的通信。
软件架构师Michael
2023/09/20
3950
Qt信号和槽入门介绍和使用
通过上图可得:Qt中通过connect函数来进行连接,从而触发一个事件 代码演示前,我们需要之前信号这个东西在帮助文档里面怎么找到,首先我们这里是创建一个按钮控件。实现点击按钮,关闭窗口,那么就应该去父类QPushButton类中找signal信号函数:
大忽悠爱学习
2021/11/15
5500
Qt 注册自定义数据类型提供信号和槽函数传递参数
Qt 信号和槽函数参数只能是基于 Qt 的基础类型的,比如 QString、int、bool 等,如果想传递自定义类型默认情况下是行不通的。要想在 Qt 的信号和槽函数之间传递自定义类型,可以先将自己的自定义类型注册一下,使用如下代码:
我与梦想有个约会
2018/12/18
5.9K0
Qt 注册自定义数据类型提供信号和槽函数传递参数
Qt 信号和槽函数参数只能是基于 Qt 的基础类型的,比如 QString、int、bool 等,如果想传递自定义类型默认情况下是行不通的。要想在 Qt 的信号和槽函数之间传递自定义类型,可以先将自己的自定义类型注册一下,使用如下代码:
我与梦想有个约会
2023/10/21
5570
Qt Quick中的信号与槽
  在QML中,在Qt Quick中,要想妥善地处理各种事件,肯定离不开信号与槽,本博的主要内容就是整理Qt 中的信号与槽的内容。
全栈程序员站长
2022/07/18
1K0
QT信号槽机制
信号槽是QT中用于对象间通信的一种机制,也是QT的核心机制。在GUI编程中,我们经常需要在改变一个组件的同时,通知另一个组件做出响应。例如:
Tencent JCoder
2022/05/06
8460
QT信号槽机制
Qt学习笔记 信号和槽
槽和普通c++成员函数一样只可以为虚函数,也可以被重用,可以是公有的也可以是私有的,也可以被其它的c++函数调用; 参数也是任意的 唯一不同的是本槽和信号是可以连在一起的,和c#的事件差不多。相连后每当发射这个信号后就会自动调用这个槽 connection(sender,SIGNAL(signal),receiver,SLOT(slot)); sender就发送信号的Qobject指针 receiver是槽的Qobject指针 signal和slot是只有形参的函数名。SIGNAL和SLOT宏会把它们的参数
lpxxn
2018/01/31
6690
Qt 信号和槽机制详解
信号和槽是 Qt 独有的一种机制,他让窗口的各种消息处理简化到极致,常规情况下我们相应某窗口(控件)的点击时都需要自己投递消息到框架中,由框架的消息队列投递给不同的窗口消息处理函数来处理。如果使用信号和槽,需要声明信号、定义槽函数、绑定信号和槽、发射信号就可以完成上述功能,代码简单容易理解,逻辑简单易懂。信号和槽的大致实现图如下:
我与梦想有个约会
2023/10/20
7980
Qt 信号和槽机制详解
QT信号槽机制[Qt槽判断信号来源]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说QT信号槽机制[Qt槽判断信号来源],希望能够帮助大家进步!!!
Java架构师必看
2022/03/09
1.8K0
QT信号槽机制[Qt槽判断信号来源]
Qt自定义信号和槽
案例需求: 创建一个老师类和学生类,下课后,老师触发饿了的信号,学生响应老师饿了的信号,并且请老师吃饭 老师类 .h
大忽悠爱学习
2021/11/15
3480
Qt初识信号槽
信号就是发生的事件,槽就是处理事件的函数。这两者不在一起,不像MFC的消息循环机制。它们是松散的耦合。要想将它们连接起来,那么必须使用connect函数来连接它们。例如,当我想实现,点击关闭按钮就会关闭当前窗口的操作。那么我就需要使用connect函数来连接“点击”这个信号函数和“关闭”这个槽函数。
zy010101
2020/04/08
8400
qt5中信号和槽的新语法
qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget)。 connect(sender, SIGNAL (valueChanged(QString,QString)),receiver, SLOT (updateValue(QString)) ); 新语法:连接到QObject成员 下面是一种新的方式来连接两个QObjects: connect(sender, &Sender::val
蘑菇先生
2018/06/21
2.1K0
QT学习之路--信号和槽的认识
信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。信号和槽 是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。信号和槽是QT自行定义的一种通信机制,它独立于标准 的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为moc(Meta Object Compiler)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。
Vaccae
2019/07/24
6360
qt5中信号和槽的新语法
qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget)。 connect(sender, SIGNAL (valueChanged(QString,QString)),receiver, SLOT (updateValue(QString)) ); 新语法:连接到QObject成员 下面是一种新的方式来连接两个QObjects: connect(sender, &Sender::val
蘑菇先生
2018/05/21
1.9K0
Qt Inside信号和槽之connect
上次和大家分享的是Qt信号和槽的一些宏定义以及元对象编译器。这次和大家分享信号和槽的connect函数到底连接了什么、还有元对象编译器都生成了什么代码。
用户5908113
2020/03/23
5710
02 qt基本控件及信号和槽
将string -----> QString [static] QString QString::fromStdString(const std::string &str) – 静态成员函数,可以直接使用类名调用 比如:
天天Lotay
2023/10/15
3230
02 qt基本控件及信号和槽
Qt信号与槽宏定义
1 信号与槽的宏定义 METHOD, SLOT, SIGNAL宏前面对应的是字符串数字; #的意思是字符串拼接; METHOD, SLOT, SIGNAL宏实则就是加了前缀的字符串。 define METHOD(a) "0"#a define SLOT(a) "1"#a define SIGNAL(a) "2"#a 2 信号与槽的使用 先定义信号槽使用的宏 SIGNAL与 SLOT; 再通过使用connect连接使用; 例: QPushButton *button = new QPushBu
Qt君
2019/07/15
1.3K0
Qt自定义信号槽
Qt的信号槽机制不仅可以使用系统提供的部分,也可以自定义信号槽。信号槽是Qt的核心机制,只要是继承了QObject类的子类或者间接子类都可以使用信号槽机制,无论是不是GUI程序。
zy010101
2020/04/08
1K0
Qt自定义信号槽
34.C++-QT信号槽分析
moc  元对象编译器, 全称是 Meta-Object Compiler,也就是“元对象编译器”。是QT翻译扩展语法到C++语言的工具,目前见扩展了信号与槽机制。 
诺谦
2022/05/10
1K0
34.C++-QT信号槽分析
18.QT-QPlainEdit 信号与槽
QPlainEdit编辑功能 Public Slots void appendHtml ( const QString & html ) void appendPlainText ( const QString & text ) void centerCursor () void clear () void copy () void cut () void insertPlainText ( const QString & text ) void paste () void redo () void sel
诺谦
2018/05/28
8210

相似问题

QT槽和信号参数

10

使用Qt信号和槽传递指针

12

信号槽中的Qt参数

10

信号和槽QT

20

Qt中的信号和槽

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文