'QWidget::QWidget(const QWidget&)'QObject::connect(socket, &QTcpSocket::readyRead, [=](){ 报两个错的原因:: error: use of deleted function C:\Users\Lenovo\Desktop\bar_test\bar_test\mainwindow.cpp:44: error: 'QWidget::QWidget(const QWidget&)' is private within
时间: 2023-12-18 18:05:39 浏览: 154
详细解析qwidget.zip
这个错误是因为 `QObject::connect` 函数中的 lambda 表达式捕获了 `this` 指针,而 `this` 指针是指向当前对象的指针。而在 `QObject::connect` 函数中,连接的两个对象必须是不同的对象,因为它们会在不同的线程中执行。所以你不能在 lambda 表达式中捕获 `this` 指针。
为了解决这个问题,你可以使用 `QObject::connect` 函数的重载形式,将 `this` 指针作为第五个参数传递进去,这个参数指定信号的接收者。例如:
```
QObject::connect(socket, &QTcpSocket::readyRead, this, [=](){
// 处理 readyRead 信号
});
```
另外,关于第二个错误,它是因为 `QWidget` 类的复制构造函数被声明为私有,所以你不能直接复制一个 `QWidget` 对象。在连接信号和槽时,你应该传递 `this` 指针,而不是复制当前对象。
阅读全文