qt 输入半径得面积的计算,这几段代码哪里有问题,为什么执行出来输入半径不显示结果
5条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-03-01 11:05关注
小鸟游菜花 上午好☀️☀️☀️️
本答案参考通义千问首先,我们分析一下代码中可能存在的问题:
- 在
Dialog::on_countBtn_clicked()
函数中,您试图获取radiusLineEdit
的文本,然后将其转换为整数。但是,代码中的变量命名和类型声明有误。
错误代码:
QString valuestr ui->radiusLineEdit->text(); int radius valuestr.toInt(&ok);
修正后的代码:
QString valueStr = ui->radiusLineEdit->text(); bool ok; int radius = valueStr.toInt(&ok);
- 然后,计算面积时,变量
radius
没有被赋值到area
之前就直接使用了,这会导致未定义的行为。应该先计算面积再设置文本。
错误代码:
double area = PI * radius * radius; ui->areaLabel_2->setText(valueStr.setNum(area));
修正后的代码:
if (ok) { double area = PI * radius * radius; ui->areaLabel_2->setText(QString::number(area)); } else { ui->areaLabel_2->setText("Invalid input"); }
-
valueStr.setNum(area)
这行代码有问题,因为valueStr
是字符串,应该使用QString::number
方法将数值转换为字符串。 -
最后,确保
Dialog
类的构造函数和析构函数的delete ui;
语句正确。如果ui
是在Dialog::~Dialog()
中释放的,那么在Dialog
构造函数中不需要再次创建ui
。
综上,这里是修正后的
dialog.cpp
代码片段:// dialog.cpp // ... void Dialog::on_countBtn_clicked() { QString valueStr = ui->radiusLineEdit->text(); bool ok; int radius = valueStr.toInt(&ok); if (ok) { double area = PI * radius * radius; ui->areaLabel_2->setText(QString::number(area)); } else { ui->areaLabel_2->setText("Invalid input"); } } Dialog::Dialog(QWidget *parent) { // ... ui = new Ui::Dialog; ui->setupUi(this); } Dialog::~Dialog() { delete ui; }
确保在
main.cpp
中正确创建Dialog
对象,并在适当的地方调用show()
方法来显示对话框。解决 1无用 - 在
悬赏问题
- ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
- ¥20 wpf datagrid单元闪烁效果失灵
- ¥15 券商软件上市公司信息获取问题
- ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
- ¥15 Android studio AVD启动不了
- ¥15 陆空双模式无人机怎么做
- ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
- ¥15 C#中的编译平台的区别影响
- ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
- ¥15 电脑蓝屏logfilessrtsrttrail问题