/home/student/qt/untitled/widget.cpp:39: error: no matching function for call to ‘QMessageBox::warning(Widget*, const char [15])’ QMessageBox::warning(this,"wrong password"); ^
时间: 2024-02-03 13:02:07 浏览: 167
这个错误是因为`QMessageBox::warning()`函数的参数不匹配。它需要传入三个参数,第一个参数是父窗口指针,第二个参数是对话框标题,第三个参数是对话框中显示的文本信息。
在你的代码中,你只传递了两个参数,缺少了第三个参数。你需要修改你的代码,将第三个参数添加到`QMessageBox::warning()`函数中,例如:
```
QMessageBox::warning(this, "提示", "密码错误,请重新输入!");
```
这样就可以正常编译和运行你的程序了。
相关问题
解决/home/student/qt/untitled/func.cpp:39: error: no matching function for call to ‘QCamera::setViewfinder(QWidget*&)’ Camera->setViewfinder(ui->Video); ^
这个错误的原因是 `QCamera::setViewfinder` 函数需要传入一个 `QCameraViewfinder` 类型的对象作为参数,而你传入了一个 `QWidget` 类型的对象。所以编译器找不到匹配的函数,报错了。
解决这个问题的方法是创建一个 `QCameraViewfinder` 对象,并将其设置为 `QWidget` 的子控件,然后再将其传入 `QCamera::setViewfinder` 函数中。代码示例如下:
```cpp
// 创建一个 QCameraViewfinder 对象
QCameraViewfinder *viewfinder = new QCameraViewfinder(this);
// 将 QCameraViewfinder 对象设置为 QWidget 的子控件
ui->Video->setGeometry(0, 0, 640, 480); // 设置控件大小
ui->Video->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
ui->Video->setAttribute(Qt::WA_StyledBackground, true);
ui->Video->setAutoFillBackground(true);
ui->Video->setLayout(new QVBoxLayout);
ui->Video->layout()->addWidget(viewfinder);
// 将 QCameraViewfinder 对象传入 QCamera::setViewfinder 函数中
QCamera *camera = new QCamera;
camera->setViewfinder(viewfinder);
```
这样就可以解决这个错误了。
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中。
非常抱歉给你带来了困惑。请尝试修改代码并重新编译,看看是否能够解决问题。如果还有其他问题,请随时向我提问。
阅读全文