Следующий фрагмент из небольшого приложения, которое я написал, используя фреймворк Qt. Идея заключается в том, что приложение может запускаться в пакетном режиме (т. Е. Вызывается скриптом) или может выполняться интерактивно.Получение аргументов командной строки в приложении Qt
Поэтому очень важно, что я могу разобрать аргументы командной строки для того, чтобы знать, какой режим, в котором для запуска и т.д.
[Редактировать]
я отладки с помощью Qt Creator 1.3 .1 на Ubuntu Karmic. Аргументы передаются обычным способом (т. Е. Путем добавления их через настройки «Project» в IDE Qt Creator).
Когда я запустил приложение, кажется, что аргументы не передаются приложению. Код ниже, это фрагмент моей функции 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;
}
[Update]
Я определил проблему - по какой-то причине, хотя 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;
}
Кто-нибудь знает, как я могу получить аргументы командной строки в своем приложении?
У вас есть дополнительная скобка на вашей попытке/уловить там. Вы не даете нам код для утилиты :: option_values ...Не могли бы вы упростить этот пример, если вы скажете, если cmdline_args.isEmpty() напечатать «oh no!»? Если да, у вас все еще проблема? – HostileFork
Кстати, что такое утилита :: options_values? Я не вижу ничего подобного в документации Qt. Также, даже если вы не передаете аргументы, первым аргументом всегда будет имя программы. Поэтому я думаю, что проблема может быть в утилите :: option_values. Также вы попробовали проверить argv [0], argv [1] и т. Д. ... попробуйте это тоже. – liaK