在自己建的类中增加signals与slot的几个注意点

27 篇文章 0 订阅

可能会出现一下几个错误:

1.error LNK2019: 无法解析的外部符号

2.无法解析的外部符号“public: virtual struct QMetaObject const ...

按照一下步骤改一下就可以了:

1.直接继承或间接继承一下public QObject,并在类中开头的地方声明:Q_OBJECT,例如:

class DuplexTunnel
	: public QObject 
	, public ITunnelWorker
{
	Q_OBJECT

。。。。

 2.右键类.h文件->属性->配置属性->常规->General->项类型 改为“自定义生成工具”->应用->自定义生成工具,填写一下内容,具体路径需要实际情况来填(可参考已有的.h文件来填)

命令行:"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(Configuration)\."

说明:Moc%27ing SocketConnection.h...

输出:.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp

附加依赖项:$(QTDIR)\bin\moc.exe;%(FullPath)

其它的默认

 3.点击确定后,右键.h文件->编译。

4.把刚刚moc生成的.cpp文件添加到项目对应的目录下(“.\GeneratedFiles\Debug”或“.\GeneratedFiles\Release”中找到moc生成的cpp文件)

5.编译项目即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt的connect函数有四个参数,分别是: sender,signal,receiver,slot。sender是发送信号的对象;signal是信号;receiver是接收信号的对象;slot是接收的槽函数,用来处理接收到的信号。 ### 回答2: 在Qt,connect函数有5个参数,具体功能如下: 1. sender:信号发送者的对象指针。当发送者发出信号时,connect函数将立信号与槽之间的连接。 2. signal:信号的函数指针。信号是一个在特定条件下被发送的函数,当发送者满足该条件时,会通过该信号通知其他接收者。 3. receiver:信号接收者的对象指针。当信号被发送时,它将由接收者的槽函数处理。 4. slot:槽函数的函数指针。槽是可以处理信号的函数,当接收者收到信号时,将执行该槽函数进行相应的处理。 5. type:连接型,用来指定信号与槽之间的连接方式。连接型包括: - Qt::DirectConnection:直接连接,信号发送后立即执行槽函数。 - Qt::QueuedConnection:队列连接,信号发送后,将信号加入到接收者对象所在的事件队列,然后再执行槽函数。 - Qt::AutoConnection:自动连接,连接型由Qt来确定。当信号发送者和接收者在同一线程时,使用直接连接,否则使用队列连接。 这些参数共同构成了Qt信号与槽的机制,通过connect函数可以立和管理信号与槽之间的连接,实现不同对象之间的交互和通信。 ### 回答3: 在Qt,connect函数有几个参数。connect函数主要用来立信号和槽之间的连接。connect函数的基本语法为: connect(sender, signal, receiver, slot, connectionType) 其,connect函数有五个参数,分别是: 1. sender:信号的发送者对象,即产生信号的对象。 2. signal:发送者对象发出的信号。信号与函数的关联通常在头文件的signals部分声明。 3. receiver:信号的接收者对象,即接收信号的对象。 4. slot:接收者对象接收信号时调用的槽函数。槽函数需要在头文件的slots部分声明,并在相应的实现文件定义。 5. connectionType:连接型,用于指定信号和槽之间的连接规则。 其,sender和receiver参数可以是QObject对象或QPointer<QObject>对象。signal和slot参数需要使用SIGNAL()和SLOT()宏将函数名转换为字符串。 通过connect函数可以立不同的连接型,常用的连接型有: - Qt::AutoConnection(默认型):在同一线程,使用直接调用来进行信号和槽的连接;在不同线程,使用Qt::QueuedConnection型进行连接。 - Qt::DirectConnection:在同一线程,使用直接调用来进行信号和槽的连接。 - Qt::QueuedConnection:在不同线程,使用事件队列来进行信号和槽的连接。 - Qt::BlockingQueuedConnection:在不同线程,使用事件队列来进行信号和槽的连接,但是发送信号的线程会被阻塞,直到槽函数执行完毕。 通过connect函数,可以将一个信号连接到一个或多个槽函数,实现信号和槽之间的通信。这种机制使得不同的对象之间可以进行高效的通信和数据传递,为Qt框架提供了强大的事件处理和消息机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值