쉼표로 구분 된 3 마크 백분율로 읽는 작은 QT 프로그램을 작성하고 마크에 대한 추가 계산을 수행해야합니다. QInputDialog를 사용하여이 작업을 수행해야하지만 한 값만 읽을 수있는 것 같습니다. 시간.
이 단계에서 나는 단지 3 개의 마크를 읽고 표시하려고합니다. 이 코드를 실행하면 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] 삭제
몇 마디 만하겠습니다