2014-02-22 48 views
1

我必須編寫一個小的QT程序,它讀取以逗號分隔的3個標記百分比,然後對標記進行一些進一步計算......我必須使用QInputDialog來完成此操作,但它似乎一次只能讀取一個值。使用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

如果您需要讀取3個值,爲什麼不定製QDialog以顯示3個字段,每個字段對應一個值? – gpalex

+0

我這樣做的課程/作業,並在作業中的說明說,3個值需要輸入在相同的輸入字段用逗號分隔 – user2094257

回答

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用於控制檯應用程序。以這種方式一起使用它們是很奇怪和毫無意義的。