SL100产测工具
Go to file
钟富强 4a25fb0e80 zhongfuqiang上传最新代码20250325 2025-03-25 16:05:45 +08:00
FactoryTestTool zhongfuqiang上传最新代码20250325 2025-03-25 16:05:45 +08:00
misc zhongfuqiang上传最新代码20250325 2025-03-25 16:05:45 +08:00
.gitattributes 优化线程退出时资源的释放问题 2024-09-12 15:18:09 +08:00
.gitignore first commit 2024-08-01 09:17:17 +08:00
FactoryTestSolution.sln first commit 2024-08-01 09:17:17 +08:00
README.md 新增大窗口播放视频按键,窗口大小根据解码视频分辨率自动调整,关掉大窗口回到原来位置播放视频 2024-09-05 09:25:01 +08:00

README.md

产测工具

遇到问题: 2024.09.01

  1. 运行报错QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread 问题分析:主线程创建了 QTcpSocket这个QTcpSocket的读写操作必须在主线程中执行不能将QTcpSocket对象通过新建的对象传参后到新建对象中对QTcpSocket进行读写操作所有的QTcpSocket 的操作都在与它关联的线程中执行。 问题解决1. 在主线程中创建 QTcpSocket 并获取连接: 继续在主线程中使用 server->nextPendingConnection() 来获取客户端连接。

                   2.  将 QTcpSocket 移动到 ClientHandler 所属的新线程:
                                在将 QTcpSocket 传递给 ClientHandler 之前,将 QTcpSocket 移动到新线程中,确保它在新线程中被使用。
                                这里注意不能将有父对象的QTcpSocket 移动到新线程中,因为父对象负责管理子对象的生命周期,如果子对象被移动到其他线程,可能会导致线程安全问题或不一致的对象状态。
                                运行报错QObject::moveToThread: Cannot move objects with a parent
                                解决方法:如果 QTcpSocket 已经有父对象,你需要先将其父对象设置为 nullptr再移动到新的线程。
    
                   3.  在 ClientHandler 内对 QTcpSocket 进行操作:
                                在 ClientHandler 中,确保所有 QTcpSocket 的操作都在同一线程内进行。
    

mDNS实现原理