다음 스 니펫은 Qt 프레임 워크를 사용하여 작성한 작은 애플리케이션에서 가져온 것입니다. 아이디어는 앱이 배치 모드 (즉, 스크립트에 의해 호출 됨)에서 실행되거나 대화식으로 실행될 수 있다는 것입니다.Qt 애플리케이션에서 명령 행 인수 얻기
내가 실행하는 어떤 모드를 알기 위해 명령 줄 인수를 구문 분석 할 수 오전, 중요하다 등
[편집]
내가 Qt는 창조주 1.3을 사용하여 디버깅하고 .1 Ubuntu Karmic에서. 인수는 정상적인 방법으로 전달됩니다 (즉, Qt Creator IDE의 'Project'설정을 통해 인수를 추가 함).
응용 프로그램을 실행할 때 인수가 응용 프로그램에 전달되지 않는 것으로 보입니다. 아래 코드는 내 main() 함수의 스 니펫입니다.
int main(int argc, char *argv[])
{
//Q_INIT_RESOURCE(application);
try {
QApplication the_app(argc, argv);
//trying to get the arguments into a list
QStringList cmdline_args = QCoreApplication::arguments();
// Code continues ...
}
catch (const MyCustomException &e) { return 1; }
return 0;
}
[업데이트] 내가 문제를 식별 한
-는 argc가 정확하지만, 어떤 이유로, ARGV의 요소가 빈 문자열이됩니다.
이 작은 코드 스 니펫을 argv 항목을 인쇄하기 위해 넣었습니다. 모든 항목이 비어 있다는 것을 두려워했습니다.
for (int i=0; i< argc; i++){
std::string s(argv[i]); //required so I can see the damn variable in the debugger
std::cout << s << std::endl;
}
누구든지 내 응용 프로그램에서 명령 줄 인수를 검색하는 방법을 알고 있습니까?
당신은 당신의 try/catch에 여분의 중괄호가 있습니다. 당신은 우리에게 utility :: option_values에 대한 코드를 제공하지 않습니다 ...cmdline_args.isEmpty() print "oh no!"라고 말하면이 예제를 단순화 할 수 없습니까? 그래도 문제가 계속 발생합니까? – HostileFork
그런데 utility :: options_values는 무엇입니까? 나는 Qt 문서에서도 그런 것을 보지 못했다. 또한 인수를 전달하지 않더라도 첫 번째 인수는 항상 프로그램 이름이됩니다. 그래서 문제가 유틸리티 :: option_values 수 있습니다 생각합니다. 또한 argv [0], argv [1] 등을 검사 해 보았습니다 ... 그 중 하나를 시도하십시오 .. – liaK