我目前正尝试使用QT为现有命令行程序创建GUI,作为学习练习。
原始代码是用c编写的,我已经包含了c ++位的c包装器。我采取了原来的
int main(int argc, char **argv)
并将其转换为正常功能(更改名称)。
我有几个qt复选框用作输入,(例如-v在cmdline中激活详细,所以现在我有一个详细的复选框,使char verbose = to" v")
还有其他一些参数需要数字,例如4个线程的-t 4。
原始程序中的选项实现如下:
while ((opt = getopt(argc, argv, "vqnrik1eE:P:NTX:F:t:h?f:o:s:")) != -1) {
switch (opt) {
case 'v':
verbose = 2;
break;
等
如何将所有这些不同选项称为标准功能?我可以把整个论点写成一个大字符串并在可能的情况下将其输入,但是我该怎么做呢?
谢谢,
答案 0 :(得分:4)
您应该远离参数并直接设置控制变量:
if(verboseCheckBox->checked()){
verbose=2;
}
//etc.
答案 1 :(得分:0)
只需使用如下字符串数组调用:
char* argv[4] = {executing_path, "-t 4","v","random_argument"};
const int argc = sizeof(argv)/sizeof(char*);
main(argc, argv);
请注意,第一个参数通常是您在main函数中收到的可执行文件的完整路径。如果可能的话,我会保持同样的行为;有时,代码解析参数在范围1... n-1
中进行,因此跳过数组中的第一个值。
既然你知道怎么做,我也会反对它。由于你已经在源代码中,你应该使用直接方法调用,以便将选项设置为棘轮怪胎在他的答案中解释。