我必须编写一个小的QT程序,用逗号分隔3个标记百分比,然后对标记进行一些进一步的计算......我必须使用QInputDialog来做这个但看起来它只能读入一次一个值。
在这个阶段我只是试图读入并显示三个标记。 当我运行此代码时,QTCreator停止工作,我必须在任务管理器中结束该过程。 任何想法我如何能够接近这一点将非常感激。我应该读取一个字符串然后将其转换为double值还是有更简单的方法?
提前致谢。
代码:
#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;
}
答案 0 :(得分:1)
显然你不能使用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
是控制台应用。以这种方式一起使用它们是奇怪而毫无意义的。