Приложение QApplication (argc, argv) - PullRequest
3 голосов
/ 24 апреля 2011

Я заметил, что main.cpp в Qt приложении должно содержать следующую строку:

QApplication app(argc, argv);

Я знаю, что argc - это число аргументов командной строки, а argv это список массивов аргументов командной строки.Но у меня возникает вопрос: что это за аргументы, которые я передаю конструктору и в то же время не могу явно увидеть?Что там работает за кулисами?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 25 апреля 2011

Просматривая ваши комментарии к другим ответам, я думаю, вы задаетесь вопросом об аргументах, передаваемых в ваш исполняемый файл, если вы не укажете никаких аргументов.Я не уверен, стандартизирован ли он или какие могут быть исключения, но обычно в этом случае argc будет 1, а argv[0] будет строкой, которая определяет команду, которая использовалась для вызова вашего исполняемого файла.

Предположим, что ваш исполняемый файл называется app и находится в /home/user/appdir.

Если текущим каталогом является каталог приложений и вы запускаете его с приложением 'app', тогда argc будет1 и argv[0] будут app.

Если вы находитесь на один каталог выше каталога приложения и вызываете его с ./appdir/app, тогда argc будет 1, и я считаю argv[0] будет appdir/app

Если вы укажете аргумент при вызове приложения;возможно, вы хотите указать приложению выводить отладочную информацию, например, так: app debug.В этом случае argc будет 2, argv[0] будет app и argv[1] будет debug.

2 голосов
/ 24 апреля 2011

Приложения Qt поддерживают некоторые аргументы командной строки.Например app.exe -style motif на Windows смешно.По сути, в этом конструкторе вы передаете аргументы классу QApplication для их анализа.

И, конечно, вы можете ничего не передавать QApplication, например:

int c=1; char** v = &argv[0]; QApplication app(c,v);, поэтому Qt не будет ничего анализировать и не будет принимать аргументы командной строки.

Об области argc и argv, если вы перейдете к QApplication, вы сможете получить к ним доступ из любой точки, которую захотите.Если вы не передаете их QApplication, вы должны позаботиться о том, чтобы сделать их глобальными.

2 голосов
/ 24 апреля 2011

Скрытых аргументов нет.Вы можете явно видеть каждый аргумент - argc, argv.В этой строке кода нет ничего закулисного.

0 голосов
/ 24 апреля 2011

Если вы спрашиваете, что QApplication делает с аргументами, тогда ответ будет в документах .На этой странице перечислены аргументы, распознаваемые Qt.

...