2014-02-27 3 views
0

QLineEdit의 Qstring을 QList를 사용하여 두 배로 변환하여 계산을 수행하고 결과를 QMessagebox에 표시 할 수 있습니다. 이것이 어떻게 할 수 있는지에 대한 제안을 얻을 수 있다면 좋을 것입니다.Qstring을 QList를 사용하여 double로 변환하십시오.

: 여기
#include <QtGui> 
#include <QList> 

#include <iostream> 

int main (int argc, char* argv[]) 
{ 
    QApplication app(argc, argv); 
    QTextStream cout(stdout); 

    bool ok; 
    double answer; 

    do 
    { 
     QString mark = QInputDialog::getText(NULL ,"MarkCalc","Enter Mark:", QLineEdit::Normal,"", &ok); 

     if (ok && !mark.isEmpty())  
      QList <QString> list; 

     double am = (mark * 0.20)+(mark * 0.50)+(mark * 0.30); 
     double ym = am * 0.20; 
     double em = 75 * 0.40; 
     double fm = em + ym; 

     if (em <= 40 && fm >= 50) 
      cout <<"pass"; 
     else 
      cout << "fail"; 

     QString response = QString("Your Final Mark: %1 \n\n%5").arg(ym).arg(em); 
     answer = QMessageBox::question(0, "Final Marks", response,QMessageBox::Yes | QMessageBox::No); 
    } while (answer == QMessageBox::Yes); 

    return 0; 
} 
+0

:

QStringList list = mark.split(","); 

는 그 후 나는 이중에 각 문자열을 변환하고 각각의 두 배에 대한 이중 한 줄을 출력하는 시간에 QStringList 하나의 문자열을 반복 foreach 문을 사용하여 5 QString에서 ("최종 표 : % 1 \ n \ n % 5"). 인수가 2 개인 경우 arg (ym) .arg (em)? – drescherjm

+0

그들은 마크로 무엇을 입력합니까? 이 값은 쉼표로 구분 된 단일 값 또는 다중 값입니까? 또는 다른 것? – drescherjm

+0

쉼표로 구분 된 3 개의 값이됩니다. QString에서 % 5을 수정해야합니다. 저는 QT에 매우 익숙하며 일주일에 한 번만 사용합니다. – user1291092

답변

0

는 OP의 코드를 취득하고 이중 다음 인쇄 이중 사용 COUT 상기 목록의 각 QString 변환 목록을 반복의 foreach를 사용 QStringList에 QString 분할 한 예이다
#include <QtGui> 
#include <QtCore> 
#include <QtWidgets> 


int main (int argc, char* argv[]) { 
    QApplication app(argc, argv); 
    QTextStream cout(stdout); 

    bool ok; 
    double answer; 

    do{ 

     QString mark = QInputDialog::getText(NULL ,"MarkCalc","Enter Mark:", QLineEdit::Normal,"", &ok); 

     if (ok && !mark.isEmpty()) { 

      QStringList list = mark.split(","); 

      foreach(QString str, list) { 
       double d = str.toDouble(); 
       cout << d << endl; 
      } 


//   double am = (mark * 0.20)+(mark * 0.50)+(mark * 0.30); 
//   double ym = am * 0.20; 
//   double em = 75 * 0.40; 
//   double fm = em + ym; 
//   if (em <= 40 && fm >= 50) 
//    cout <<"pass"; 
//   else 
//    cout << "fail"; 


//   QString response = QString("Your Final Mark: %1 \n\n%5").arg(ym).arg(em); 
//   answer = QMessageBox::question(0, "Final Marks", response,QMessageBox::Yes | QMessageBox::No); 
     } 
    } while (answer == QMessageBox::Yes); 


    return 0; 
} 

다음 줄은 쉼표를 사용하여 QString을 QStringList로 분할합니다. 왜 %를 사용하는

foreach(QString str, list) { 
    double d = str.toDouble(); 
    cout << d << endl; 
} 
+0

이 코드는 http : // qt-project에서 다운로드 할 수있는 Windows 32 비트 용 Qt 5.2.1 (MinGW 4.8, OpenGL, 634MB) 다운로드를 사용하여 Qt5.2에서 테스트되었습니다.org/downloads – drescherjm

+0

내 버전 Qt 4.7.0 (32 비트)에서 코드를 테스트했습니다. qt 위젯을 제거하고 작동했습니다. 따라서 계산 부분에 관해서는 내가하는 방식보다 더 나은 방법이 될 것입니다. am = 과제 표시, ym = 연도 표시, em = 시험 표시, fm = 최종 표시. – user1291092

+0

당신이 할 수있는 한가지는 QList 점수를 선언하는 것입니다; foreach 앞에. 그런 다음 "cout << d << endl;"대신 " d를 점수 목록에 삽입하십시오. 그리고 나서 foreach 루프가 점수 [0], 점수 [1] ...을 당신의 점수로 사용하십시오. 사용자가 3 개의 숫자를 입력했는지 확인하려면 여기를 확인해야합니다. 또한 QString :: toDouble()에 대한 설명서를 살펴보십시오. 전달되는 것이 숫자인지 확인하는 데 사용할 수있는 bool에 대한 선택적 포인터가 있습니다. – drescherjm

관련 문제