正在Qt应用程序中检索命令行参数
Retrieving command line arguments in a Qt application
我想在Unix命令提示符下执行类似操作:
./countHats("red") or
./countHats "red"
然后程序运行并计算红帽子。
我该怎么做?
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
w.setGeometry(QRect(QPoint(100,100), QSize(1000,500)));
CHat *hat = new CHat();
hat->color(argv[0]);//"red" ????
return a.exec();
}
您最好使用QCoreApplication::arguments
基本上,你需要这样使用它:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
w.setGeometry(QRect(QPoint(100,100), QSize(1000,500)));
CHat *hat = new CHat();
hat->color(QCoreApplication::arguments().at(1));
return a.exec();
}
然后调用以下命令:./countHats red
。在这种特殊情况下不需要引号,也不需要括号,尽管它也可以使用引号。
如果您有一个包含空格等的参数,则需要引号,而对于非常简单的颜色,情况并非如此。此外,您还需要颜色代码管理。
PS,我们为什么这么做,你应该用一个更好的名字来称呼你的二传手,比如setColor
。color()
通常用于获取颜色的值,而不是设置,但现在这有点偏离主题。我只是想帮你指出这一点。
此外,你似乎没有删除帽子,它也不参与Qt父/子关系,也不会被自动删除。你也需要改进这一点。
然而,请注意,我和David Faure一直在开发一个QCommandLineParser
类,希望您可以从Qt5.2开始使用它。现在正在审查gerrit上的更改以进行集成。
代码应该是argv[1]。。。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
w.setGeometry(QRect(QPoint(100,100), QSize(1000,500)));
CHat *hat = new CHat();
hat->color(argv[1]);//"red" ???? --> argv[1]
return a.exec();
}
这适用于命令行:
./countHats "red" or
./countHats red
首先,对于C/C++中的任何应用程序:argv的第一个元素是程序的名称,因此argv[0]将是"countHats"而不是"red"。如果你想有更多的命令行参数,我建议你使用boost::program_options库,它很容易使用,功能也很强大。http://www.boost.org/doc/libs/1_54_0/doc/html/program_options.html
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 命令行参数,cant 或两个变量
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- 编写一个将 LLVM IR 文件作为命令行参数的程序
- 通过命令行参数获取llvm ir文件时面临问题
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 命令行参数在不到 3 个 LOC 中 int?
- 在命令行参数中使用引号
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 二进制数据作为命令行参数
- 如何在 C++11 中创建具有命令行参数大小的动态数组?
- 需要有关如何设置getopt_long以正确传递命令行参数的建议
- Bash 脚本和命令行参数