如何将 QCommandLineParser 的实例化传递给 Qt 中的函数?



目前我有一个有效的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();
}

在主要.cpp:

...
QCoreApplication app(argc, argv);
ExecuteTask cmnd_line_func;
QCommandLineParser parser;
cmnd_line_func.setUp(parser);
...

但是,我收到此错误(附在链接中): 编译错误

我也尝试在 ExecuteTask.h 中将 QCommandLineParser 解析器声明为指针,但显然这会导致您必须运行时出现问题:

parser.process(app)

在主要。我实际上也尝试将QCoreApplication app传递给我的 setUp 函数以在我的setUp()方法中运行parser.process(app),但这带来了类似的"......在这种情况下是私人的"。

还尝试了另一种解决方案,将QCommandLineParser parser声明为指针并使用getParser()方法在main中返回解析器,但这会导致类似的"私有"问题。

- 不知道从这里开始,因为我习惯于C++,只是将 argc 和 argv 传递给方法,但 Qt 是不同的。

那么有没有办法将QCommandLineParser传递给main()之外的方法呢?这些文档对我没有多大帮助,我遇到的几乎每个教程都在 main() 中完成了所有配置,这根本不是我想要做的。

好吧,在胡思乱想之后,我找到了解决方案。 在 ExecuteTask.h 中:

void setUp(QCommandLineParser *parser);

在 ExecuteTask.cpp:

void ExecuteTask::setUp(QCommandLineParser *parser){
parser->setApplicationDescription("Learning console app in Qt");
parser->addHelpOption();
}

在主.cpp:

ExecuteTask cmnd_line_func;
QCommandLineParser parser;
cmnd_line_func.setUp(&parser);
parser.process(app);

相关内容

  • 没有找到相关文章

最新更新