如何将 QCommandLineParser 的实例化传递给 Qt 中的函数?
How do I pass an instantiation of QCommandLineParser to a function in Qt?
目前我有一个可用的 Qt 命令行应用程序。但是,我需要重构这个工作程序,以便我的 QCommandLineParser 对象在 class 方法中而不是在 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);
...
但是,我收到此错误(附在 link 中):
Compilation error
我也曾尝试在 ExecuteTask.h 中将 QCommandLineParser 解析器声明为指针,但显然当您必须 运行:
时这会导致问题
parser.process(app)
主要。我实际上也尝试过在我的 setUp()
方法中将 QCoreApplication app
传递到我的 setUp 函数到 运行 parser.process(app)
但这带来了类似的“......在这种情况下是私有的”。
还尝试了另一种解决方案,其中将 QCommandLineParser parser
声明为指针并使用 getParser()
方法 return main 中的解析器,但这会导致类似的 "private" 问题。
-- 不知道从这里去哪里,因为我习惯了 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();
}
在main.cpp中:
ExecuteTask cmnd_line_func;
QCommandLineParser parser;
cmnd_line_func.setUp(&parser);
parser.process(app);
目前我有一个可用的 Qt 命令行应用程序。但是,我需要重构这个工作程序,以便我的 QCommandLineParser 对象在 class 方法中而不是在 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);
...
但是,我收到此错误(附在 link 中): Compilation error
我也曾尝试在 ExecuteTask.h 中将 QCommandLineParser 解析器声明为指针,但显然当您必须 运行:
时这会导致问题parser.process(app)
主要。我实际上也尝试过在我的 setUp()
方法中将 QCoreApplication app
传递到我的 setUp 函数到 运行 parser.process(app)
但这带来了类似的“......在这种情况下是私有的”。
还尝试了另一种解决方案,其中将 QCommandLineParser parser
声明为指针并使用 getParser()
方法 return main 中的解析器,但这会导致类似的 "private" 问题。
-- 不知道从这里去哪里,因为我习惯了 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();
}
在main.cpp中:
ExecuteTask cmnd_line_func;
QCommandLineParser parser;
cmnd_line_func.setUp(&parser);
parser.process(app);