Qt6程序启动参数
接收程序启动参数的标准方法是使用 QCoreApplication::arguments() 配合 QCommandLineParser。你不需要在 Qt 6 中做任何特殊设置,直接在 main 函数里把 argc 和 argv 传给 QApplication/QCoreApplication,参数就会被自动捕获。
方案一:
#include <QApplication>
#include <QCommandLineParser>
#include <QCommandLineOption>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 1. 设置应用基本信息(帮助/版本会自动调用)
QCoreApplication::setApplicationName("my-qt-app");
QCoreApplication::setApplicationVersion("1.0");
// 2. 创建解析器
QCommandLineParser parser;
parser.setApplicationDescription("Qt6 命令行工具示例");
// 3. 添加内置帮助/版本选项(-h, --help, -v, --version)
parser.addHelpOption();
parser.addVersionOption();
// 4. 定义布尔开关:-v 或 --verbose
QCommandLineOption verboseOption(QStringList() << "v" << "verbose",
"输出详细信息");
parser.addOption(verboseOption);
// 5. 定义带值参数:-f <file> 或 --file <file>
QCommandLineOption fileOption(QStringList() << "f" << "file",
"指定输入文件",
"文件名"); // “文件名”是提示语
parser.addOption(fileOption);
// 6. 定义位置参数(不带横杠的纯参数)
parser.addPositionalArgument("input", "待处理的文件");
// 7. 正式解析(核心一步)
parser.process(app);
// 8. 读取结果
bool verbose = parser.isSet(verboseOption);
QString fileName = parser.value(fileOption);
QStringList positionalArgs = parser.positionalArguments();
// 业务逻辑...
return app.exec();
}
方案二:
#include <QApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QStringList args = QCoreApplication::arguments();
// args[0] 永远是程序自身的路径
for (int i = 1; i < args.size(); ++i) {
qDebug() << "参数" << i << ":" << args[i];
}
// 假设调用: ./myapp document.txt
if (args.size() > 1) {
QString fileName = args[1]; // 直接取
}
return app.exec();
}