使用QInputDialog将多个值读入变量

时间:2014-02-22 14:01:31

标签: qt

我必须编写一个小的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;
}

1 个答案:

答案 0 :(得分:1)

显然你不能使用QInputDialog::getDouble因为它不允许你输入用逗号分隔的3个值。您应该使用QInputDialog::getTextQString::splitQString::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是控制台应用。以这种方式一起使用它们是奇怪而毫无意义的。