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 21:45:00 浏览: 61
这个报错可能是因为您在使用 `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_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); }
这段代码中实现了一个槽函数,当用户点击名为 btnCal 的按钮时,会执行该槽函数。槽函数的功能是读取用户在 editNum 和 editPrice 两个文本框中输入的数字,并计算它们的乘积。最后,使用 setNum() 函数将计算结果转换为字符串,并保留两位小数。但是,该函数中的计算结果并没有进行任何输出或者展示,建议您添加相应的代码将结果输出或者展示给用户。
C++Qt不用UI的形式实现在QLineEdit中输入数字,通过Add的按钮,添加到文本框中
如果你不想使用UI形式实现这个功能,你可以直接在代码中创建QLineEdit和QPushButton对象,并将它们添加到QWidget中,然后将它们的信号槽连接起来。以下是一个简单的示例代码:
```cpp
#include <QtWidgets>
class Widget : public QWidget
{
public:
Widget(QWidget *parent = nullptr)
: QWidget(parent)
{
// 创建QLineEdit和QPushButton对象
QLineEdit *lineEdit = new QLineEdit(this);
QPushButton *addButton = new QPushButton("Add", this);
// 设置布局
QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(lineEdit);
layout->addWidget(addButton);
setLayout(layout);
// 连接信号槽
connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(onAddClicked()));
connect(addButton, SIGNAL(clicked()), this, SLOT(onAddClicked()));
}
private slots:
void onAddClicked()
{
// 获取输入的数字并添加到文本框中
QString text = static_cast<QLineEdit*>(sender()->parent())->text();
bool ok;
int num = text.toInt(&ok);
if (ok) {
qDebug() << "Add number: " << num;
// 在这里添加到文本框中
}
// 清空输入框
static_cast<QLineEdit*>(sender()->parent())->clear();
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
```
在上面的代码中,我们创建了一个Widget类,继承自QWidget。在构造函数中,我们创建了一个QLineEdit和一个QPushButton对象,并将它们添加到水平布局中,然后将该布局设置为QWidget的布局。
接着,我们将QLineEdit的returnPressed信号和QPushButton的clicked信号连接到同一个槽函数onAddClicked中。在槽函数中,我们获取输入的数字并添加到文本框中。最后,我们清空输入框。
需要注意的是,我们在获取输入框的文本时,使用了sender()函数获取信号发送者,并通过parent()函数获取其父对象,即QWidget对象。由于我们知道该QWidget对象中只包含一个QLineEdit和一个QPushButton对象,因此可以将其强制转换为QLineEdit对象,并获取其text()属性。
阅读全文