目前我有一个工作的 Qt 命令行应用程序。但是,我需要重构这个工作程序,以便我的 QCommandLineParser 对象在类方法中而不是在 main() 本身中配置。我已经尝试了明显的:
在 ExecuteTask.h 中:
void setUp(QCommandLineParser parser);
在 ExecuteTask.cpp 中:
void ExecuteTask::setUp(QCommandLineParser parser){
parser.setApplicationDescription("Learning console app in Qt");
parser.addHelpOption();
}
在 main.cpp 中:
...
QCoreApplication app(argc, argv);
ExecuteTask cmnd_line_func;
QCommandLineParser parser;
cmnd_line_func.setUp(parser);
...
但是,我收到此错误(附加在链接中): 编译错误
我还尝试将 QCommandLineParser 解析器声明为 ExecuteTask.h 中的指针,但显然这会在您必须运行时导致问题:
parser.process(app)
主要。我实际上也尝试过传递QCoreApplication app
给我的 setUp 函数以parser.process(app)
在我的setUp()
方法中运行,但这带来了类似的“......在此上下文中是私有的”。
还尝试了另一种解决方案,其中声明QCommandLineParser parser
为指针并使用getParser()
方法在 main 中返回解析器,但这会导致类似的“私有”问题。
-- 不知道从哪里开始,因为我习惯了 C++,只是将 argc 和 argv 传递给方法,但这与 Qt 不同。
那么有没有一种方法可以将 QCommandLineParser 传递给 main() 之外的方法?文档对我帮助不大,几乎我遇到的每个教程都在 main() 中完成了所有配置,这根本不是我想做的。