void Widget::on_btnCal_clicked() { int num = ui->editNum->text().toInt(); float price = ui->editPrice->text().toFloat(); float total = num*price; QString str = QString::setNum(total,'g',2); }为什么会出现without boject的报错
时间: 2024-03-20 22:45:00 浏览: 19
这个报错可能是因为您在使用 `QString::setNum()` 函数时,没有指定该函数的调用对象,即没有使用 `str.` 来调用该函数。您可以将代码修改为以下形式,即在 `setNum()` 函数前加上 `str.`:
```
void Widget::on_btnCal_clicked() {
int num = ui->editNum->text().toInt();
float price = ui->editPrice->text().toFloat();
float total = num * price;
QString str = QString();
str.setNum(total, 'g', 2);
// 这里可以添加代码将结果输出或者展示给用户
}
```
这样修改后,应该就不会再出现 "without boject" 的报错了。
相关问题
void Widget::on_pushButton_clicked() { tcpclient->connectToHost(ui->lineEdit->text(),ui->lineEdit_2->text().toInt()); } void Widget::on_pushButton_2_clicked() { QString str=ui->lineEdit_3->text(); QByteArray qbyte=str.toUtf8(); char *cstr=qbyte.data(); qDebug()<<cstr<<endl; tcpclient->write(cstr,100); }这段代码的作用
这段代码是一个基于Qt框架的TCP客户端程序的两个槽函数。第一个槽函数`on_pushButton_clicked()`会在用户点击`pushButton`按钮时被触发,它会根据用户在`lineEdit`和`lineEdit_2`输入框中的输入,使用`tcpclient`对象连接到指定的TCP服务器。
第二个槽函数`on_pushButton_2_clicked()`会在用户点击`pushButton_2`按钮时被触发,它会将用户在`lineEdit_3`输入框中输入的文本转换为UTF-8编码的字节数组,并将其发送给服务器端。具体地,它会首先调用`str.toUtf8()`将用户输入的文本转换为UTF-8编码的字节数组`qbyte`,然后通过`qbyte.data()`获取字节数组的指针,最后使用`tcpclient`对象的`write()`方法将指定长度的字节流发送给服务器端。在这里,指定的长度为100。同时,它还会在控制台输出发送的字节流。
解释这段代码void MainWindow::on_pushButton_2_clicked() { int DBnum = ui->spinBox_dizhi->text().toInt();//DB编号 int byteStart = ui->lineEdit_qishi->text().toInt();//起始字节 int byteNum = ui->spinBox_zhijie->text().toInt();//字节长度 qDebug() <<DBnum; qDebug() <<byteStart; qDebug() <<byteNum; qint32 buff = ui->lineEdit_zhi->text().toInt(); qDebug() << "write:" << buff; client->DBWrite( DBnum , byteStart , byteNum, &buff); }
这段代码是一个槽函数,当用户点击 "pushButton_2" 按钮时会被触发执行。下面是对代码的解释:
1. `int DBnum = ui->spinBox_dizhi->text().toInt();`
从名为 `spinBox_dizhi` 的控件获取文本内容,并将其转换为整数类型,然后存储在变量 `DBnum` 中。这里假设 `spinBox_dizhi` 是一个用于输入 DB 编号的微调框(spin box)。
2. `int byteStart = ui->lineEdit_qishi->text().toInt();`
从名为 `lineEdit_qishi` 的控件获取文本内容,并将其转换为整数类型,然后存储在变量 `byteStart` 中。这里假设 `lineEdit_qishi` 是一个用于输入起始字节的行编辑框(line edit)。
3. `int byteNum = ui->spinBox_zhijie->text().toInt();`
从名为 `spinBox_zhijie` 的控件获取文本内容,并将其转换为整数类型,然后存储在变量 `byteNum` 中。这里假设 `spinBox_zhijie` 是一个用于输入字节长度的微调框(spin box)。
4. `qDebug() << DBnum;`
使用 qDebug() 函数将变量 `DBnum` 的值输出到调试窗口。这里是为了调试目的,可以观察到 `DBnum` 的值是否正确。
5. `qDebug() << byteStart;`
使用 qDebug() 函数将变量 `byteStart` 的值输出到调试窗口。同样是为了调试目的,可以观察到 `byteStart` 的值是否正确。
6. `qDebug() << byteNum;`
使用 qDebug() 函数将变量 `byteNum` 的值输出到调试窗口。同样是为了调试目的,可以观察到 `byteNum` 的值是否正确。
7. `qint32 buff = ui->lineEdit_zhi->text().toInt();`
从名为 `lineEdit_zhi` 的控件获取文本内容,并将其转换为 qint32 类型,然后存储在变量 `buff` 中。这里假设 `lineEdit_zhi` 是一个用于输入数值的行编辑框。
8. `qDebug() << "write:" << buff;`
使用 qDebug() 函数将字符串 "write:" 和变量 `buff` 的值输出到调试窗口。用于调试目的,可以观察到 "write:" 和 `buff` 的值是否正确。
9. `client->DBWrite(DBnum, byteStart, byteNum, &buff);`
调用名为 `client` 的对象的 `DBWrite` 方法,将 `DBnum`、`byteStart`、`byteNum` 和 `buff` 作为参数传递给该方法。这里假设 `client` 是一个客户端对象,具有 `DBWrite` 方法用于向数据库写入数据。