D:\workspace\ModbusDemo1\mainwindow.cpp:16: error: C2247: “QObject::moveToThread”不可访问,因为“FocalSerialPort”使用“private”从“QObject”继承
时间: 2023-09-25 13:13:39 浏览: 115
C程序设计教学课件:CHAPTER2VISUALC6.0INTRODUCTION.pptx
这个错误是由于在FocalSerialPort类中,QObject的moveToThread函数是私有的,因此不能在FocalSerialPort类外部访问它。这意味着您不能将FocalSerialPort对象移动到不同的线程中。
解决这个问题的一种方法是在FocalSerialPort类中添加一个公共函数,该函数将调用QObject的moveToThread函数。例如:
```c++
public:
void moveToThread(QThread *thread) {
QObject::moveToThread(thread);
}
```
然后,在MainWindow类中,您可以使用这个公共函数将FocalSerialPort对象移动到不同的线程中,而不是直接调用QObject的moveToThread函数。例如:
```c++
serialPort = new FocalSerialPort(this);
QThread *thread = new QThread(this);
serialPort->moveToThread(thread);
connect(thread, &QThread::started, serialPort, &FocalSerialPort::connect);
thread->start();
```
这样就可以避免上述错误,并将FocalSerialPort对象移动到不同的线程中。
阅读全文