我必须编写一个小的QT程序,该程序读取以逗号分隔的3个标记百分比,然后对这些标记进行一些进一步的计算...我必须使用QInputDialog来执行此操作,但似乎只能在以下位置读取一个值一个时间。
在此阶段,我仅尝试阅读并显示三个标记。当我运行此代码时,QTCreator停止工作,我必须在任务管理器中结束该过程。我将如何解决这个问题的任何想法将不胜感激。我应该读一个字符串,然后将其转换为双精度值,还是有一种更简单的方法?
提前致谢。
代码:
#include <QTGui>
#include <QApplication>
#include <QString>
#include <QTextStream>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTextStream cin(stdin, QIODevice::ReadOnly);
QTextStream cout(stdout, QIODevice::WriteOnly);
double mark1, mark2, mark3;
double passMarkNeeded = 0;
QInputDialog::getDouble(0, "Enter marks", "Marks", 1);
cin >> mark1 >> mark2 >> mark3;
cout << "User entered " << mark1 << mark2 << mark3;
return EXIT_SUCCESS;
}
显然您不能使用,QInputDialog::getDouble
因为它不允许您输入3个值,并用逗号分隔。您应该使用QInputDialog::getText
,QString::split
并QString::toDouble
:
QStringList list = QInputDialog::getText(0, "Input values", "Input values:").split(",");
if (list.count() == 3) {
double a = list[0].toDouble(),
b = list[1].toDouble(),
c = list[2].toDouble();
qDebug() << "Values:" << a << b << c;
}
我不确定为什么要使用QInputDialog
标准输入(cin)。QInputDialog
适用于GUI应用程序,适用于cin
控制台应用程序。以这种方式一起使用它们是奇怪且毫无意义的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句