新增大窗口播放视频按键,窗口大小根据解码视频分辨率自动调整,关掉大窗口回到原来位置播放视频
This commit is contained in:
10
README.md
10
README.md
@@ -3,17 +3,13 @@
|
||||
遇到问题:
|
||||
2024.09.01
|
||||
1. 运行报错:QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread
|
||||
问题分析:主线程创建了 QTcpSocket,这个QTcpSocket的读写操作必须在主线程中执行,不能将QTcpSocket对象
|
||||
通过新建的对象传参后到新建对象中对QTcpSocket进行读写操作,所有的QTcpSocket 的操作都在与它关
|
||||
联的线程中执行。
|
||||
问题分析:主线程创建了 QTcpSocket,这个QTcpSocket的读写操作必须在主线程中执行,不能将QTcpSocket对象通过新建的对象传参后到新建对象中对QTcpSocket进行读写操作,所有的QTcpSocket 的操作都在与它关联的线程中执行。
|
||||
问题解决:1. 在主线程中创建 QTcpSocket 并获取连接:
|
||||
继续在主线程中使用 server->nextPendingConnection() 来获取客户端连接。
|
||||
|
||||
2. 将 QTcpSocket 移动到 ClientHandler 所属的新线程:
|
||||
在将 QTcpSocket 传递给 ClientHandler 之前,将 QTcpSocket 移动到新线程中,确保它在新线程
|
||||
中被使用。
|
||||
这里注意不能将有父对象的QTcpSocket 移动到新线程中,因为父对象负责管理子对象的生命周期,
|
||||
如果子对象被移动到其他线程,可能会导致线程安全问题或不一致的对象状态。
|
||||
在将 QTcpSocket 传递给 ClientHandler 之前,将 QTcpSocket 移动到新线程中,确保它在新线程中被使用。
|
||||
这里注意不能将有父对象的QTcpSocket 移动到新线程中,因为父对象负责管理子对象的生命周期,如果子对象被移动到其他线程,可能会导致线程安全问题或不一致的对象状态。
|
||||
运行报错:QObject::moveToThread: Cannot move objects with a parent
|
||||
解决方法:如果 QTcpSocket 已经有父对象,你需要先将其父对象设置为 nullptr,再移动到新的线程。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user