C:\Users\22836\Desktop\QT\untitled1\mainwindow.cpp:27: error: Reference to non-static member function must be called
时间: 2023-08-27 12:19:52 浏览: 46
这个错误是因为你尝试在lambda表达式中引用了非静态成员函数。在lambda表达式中,只能直接引用静态成员函数或者全局函数。
要解决这个问题,你可以使用`this`指针来调用非静态成员函数。修改代码如下:
```cpp
connect(ui->checkBox, &QCheckBox::stateChanged, [=](int state){
qDebug() << state << endl;
if(state == 2){
strList.push_back(this->ui->checkBox->text());
}
//state 2选中 0未选中
});
```
通过使用`this`指针,你可以访问到当前对象的成员变量和成员函数。这样就能够调用非静态成员函数了。请确保在lambda表达式中使用`this`指针时,确保当前对象是有效的。
相关问题
C:\Users\22836\Desktop\QT\untitled1\mainwindow.cpp:27: error: No matching member function for call to 'append'
非常抱歉,我的错误。QStringList确实有一个名为`append`的成员函数,而不是`push_back`。因此,你应该使用`append`函数来添加元素到QStringList中。
请将代码修改为以下形式:
```cpp
connect(ui->checkBox, &QCheckBox::stateChanged, [=](int state){
qDebug() << state << endl;
if (state == 2) {
strList.append(ui->checkBox->text());
}
//state 2选中 0未选中
});
```
通过使用`append`函数,你可以将元素添加到QStringList中。
非常抱歉给你带来了困惑。请尝试修改代码并重新编译,看看是否能够解决问题。如果还有其他问题,请随时向我提问。
D:\aaagxzhsy\untitled\mainwindow.cpp:53: error: undefined reference to `MainWindow::DataSend()'
这个错误提示是因为在mainwindow.cpp文件中调用了MainWindow类中的DataSend()函数,但是编译器没有找到该函数的定义。这通常是由于以下几种情况导致的:
1. DataSend()函数没有被实现。如果DataSend()函数只是在类的声明中声明了,但是没有在实现文件中进行定义,那么编译器就会提示undefined reference错误。需要在实现文件中添加DataSend()函数的定义,并且确保函数实现的正确性。
2. DataSend()函数被定义在了其他文件中。如果DataSend()函数被定义在了其他文件中,那么需要在mainwindow.cpp文件中添加该函数的头文件,并且确保链接器能够正确地将该函数与mainwindow.cpp文件进行链接。
3. DataSend()函数的访问权限不正确。如果DataSend()函数被定义为私有函数,那么只能在类的内部进行调用,如果在mainwindow.cpp文件中进行调用,编译器就会提示undefined reference错误。
综上所述,需要检查DataSend()函数的定义是否正确,并且确保在mainwindow.cpp文件中可以正确地访问该函数。