Qt获取main函数参数argv的中文字符串
1. 使用QString::fromXXX(argv[1])均获取失败
2. 使用qApp->arguments(),并配合QTextCodec时,在Qt4.8.6以及Qt5.9.2均测试成功
程序如下:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
#endif
if ( 1 == argc ) {
// 启动另一个自己,并传入中文参数
QProcess::startDetached(qApp->applicationFilePath(), QStringList() << "新建文件夹" << "中文" << "english");
QTimer::singleShot(0, qApp, SLOT(quit()));
} else {
QTextEdit *textEdit = new QTextEdit;
textEdit->setPlainText(qApp->arguments().join('\n'));
textEdit->show();
}
return a.exec();
}