В настоящее время я пытаюсь создать графический интерфейс для существующей программы командной строки с использованием QT в качестве учебного упражнения.
Исходный код был написан в c, и я включил c-оболочку для бита c++. Я взял оригинал
int main(int argc, char **argv)
и превратил его в нормальную функцию (сменил имя).
У меня есть несколько флажков qt, сделанных для ввода ввода (например, -v активирована verbose в cmdline, так что теперь у меня есть подробный флажок, который делает char verbose = to "v")
Также есть несколько других аргументов, которые принимают числа, например -t 4 для 4 потоков.
Варианты в исходной программе реализованы так:
while ((opt = getopt(argc, argv, "vqnrik1eE:P:NTX:F:t:h?f:o:s:")) != -1) {
switch (opt) {
case 'v':
verbose = 2;
break;
и т.д
Как я могу назвать все эти разные параметры стандартной функцией? Я могу написать весь аргумент в одну большую строку и передать, если это возможно, но как мне это сделать?
Благодаря,
Вероятно, вам следует отказаться от аргументов и напрямую установить контрольные переменные:
if(verboseCheckBox->checked()){
verbose=2;
}
//etc.
Просто вызовите массив таких строк:
char* argv[4] = {executing_path, "-t 4","v","random_argument"};
const int argc = sizeof(argv)/sizeof(char*);
main(argc, argv);
Обратите внимание, что первым параметром обычно является полный путь к исполняемому файлу, который вы получаете в основной функции. Если возможно, я буду придерживаться такого же поведения; иногда аргументы разбора кода делают это в диапазоне 1... n-1
поэтому пропускают первое значение в массиве.
Теперь, когда вы знаете, как это сделать, я бы посоветовал это сделать. Поскольку вы уже находитесь в исходном коде, вы, вероятно, должны использовать прямые вызовы методов, чтобы указать параметры, как объясненный в ответе храповика.