gpt4 book ai didi

c++ - Qt:在两个子线程之间使用信号和槽

转载 作者:行者123 更新时间:2023-11-28 07:29:05 26 4
gpt4 key购买 nike

一般来说,我是 Qt 和 C++ 的新手,我正在尝试制作一个运行两个子线程(threadA 和 threadB)的程序。两个线程都是在 main.cpp 中创建的,如下所示:

ThreadA threadA;
threadA.start();
ThreadB threadB;
threadB.start();

然后这两个线程独立运行。我需要让 threadA 能够调用 threadB 中的方法,将数据作为参数传递到进程中。我已经尝试使用信号和插槽,将其添加到我的 main.cpp 中:

QThread::connect(&threadA, SIGNAL(mySignal(uint)),
&threadB, SLOT(mySlot(uint)));

其中 threadA::mySignal(uint) 用于:

//a.h
signals:
void mySignal(unsigned int blah);
//a.cpp
emit mySignal(42);

threadB::mySlot(uint) 在 b:

//b.h
public slots:
void mySlot(unsigned int fluff);
//b.cpp
void threadB::mySlot(unsigned int fluff)
{ doStuff(fluff); ... }

程序成功编译和运行,但我在调试日志中收到来自 QObject 的消息:

QObject::connect: No such slot QThread::mySlot(uint) in ../Project/main.cpp:42

意味着编译器在 QThread 而不是 threadB 中查找 mySlot。谁能告诉我我哪里出错了?任何帮助将不胜感激,如果需要,我可以提供更多详细信息。

最佳答案

首先针对你提到的错误

The program compiles and runs sucessfully, but I get a message from QObject in my debug log:

QObject::connect: No such slot QThread::mySlot(uint) in ../Project/main.cpp:42

您正在使用 mySlot 并且已经定义了 MySlot 请返回您的代码

你写了

QThread::connect(&threadA, SIGNAL(mySignal(uint)), &threadB, SLOT(mySlot(uint)));

定义

//b.h

public slots:
void MySlot(unsigned int fluff);

关于c++ - Qt:在两个子线程之间使用信号和槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18056533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com