gpt4 book ai didi

c++ - QObject::connect 参数太多

转载 作者:行者123 更新时间:2023-11-27 22:39:22 25 4
gpt4 key购买 nike

所以我无法让 connect() 正常工作。根据 QT 文档,我看不出我的代码有任何明显错误。

我不能随意分享这个项目中的其余代码,而且我认为它无论如何都不相关,所以我将提供我的主要函数以及类头文件我的 close_thread 插槽存在。这似乎是问题持续存在的唯一地方。

基本上,在我在 main() 中创建的工作线程中,有一个 while 循环在做一堆肮脏的工作。不过,这对我的问题并不是很重要。

我目前遇到的情况是,当我关闭应用程序时,线程仍在运行,一切都崩溃了。然后我的想法是在应用程序关闭之前发送一个信号,允许线程从其函数返回并在运行时结束之前关闭,从而避免我描述的问题。

截至目前,尝试将我的 QApplication 中的 aboutToQuit 信号与我的插槽 close_thread 连接会产生多个错误,我在下面列出了这些错误。

我在整个项目的其他地方都使用过 connect() ,没有任何问题,所以我对这个特殊的问题感到有点困惑。

 int main(int argc, char *argv[])
{
QApplication a(argc, argv);

MainWindow w;
WorkerThread worker(w.ui);
connect(&a, &QApplication::aboutToQuit, &worker, &WorkerThread::close_thread);

w.show();
worker.start();

return a.exec();

}

错误信息:

invalid conversion from 'QApplication*' to 'SOCKET {aka unsigned int}' [-fpermissive] connect(&a, &QApplication::aboutToQuit, &worker, &WorkerThread::close_thread);


cannot convert 'void (QCoreApplication::)(QCoreApplication::QPrivateSignal)' to 'const sockaddr' for argument '2' to 'int connect(SOCKET, const sockaddr*, int)'

任何帮助将不胜感激。感谢您的宝贵时间!

最佳答案

问题是由名称重叠引起的,您确定导入了以下 header :

#include <sys/types.h>
#include <sys/socket.h>

或包含这些 header 的 header ,并且您正在使用 connect在该 header 中定义。

必须使用QObject的connect方法:

QObject::connect(&a, &QApplication::aboutToQuit, &worker, &WorkerThread::close_thread);

关于c++ - QObject::connect 参数太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50417422/

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