QFileDialog
在我的代码中使用如下:
QFileDialog fileDlg;
fileDlg.setFileMode(QFileDialog::AnyFile);
fileDlg.setViewMode(QFileDialog::List);
fileDlg.setNameFilter("Excel Files(*.csv)");
fileDlg.setDefaultSuffix("csv");
fileDlg.setAcceptMode(QFileDialog::AcceptSave);
fileDlg.exec();
不幸的是,这不使用用户当前语言环境中的文本。我希望保存按钮是“保存”。此外,当我单击对话框时,按钮的文本设置为“打开”,而在我的语言环境中它应该是“打开”。
如何向QFileDialog
提供本地化字符串?
答案 0 :(得分:3)
我知道这已被回答并被接受,但正确的方法不是手动翻译Qt已经提供的内容而是 加载Qt中包含的翻译 像这样:
/* load the system translations provided by Qt */
QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(),
QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);
/* load our custom translations for this application */
QTranslator myappTranslator;
myappTranslator.load("myapp_" + QLocale::system().name());
app.installTranslator(&myappTranslator);
这样,Qt将翻译它已经知道的内容(就像它自己的小部件一样),并将使用随应用程序提供的自定义翻译。
答案 1 :(得分:1)
“打开”字符串是硬编码的,但在QFileDialog
:
void QFileDialogPrivate::_q_updateOkButton()
{
// ...
if (acceptMode == QFileDialog::AcceptSave)
button->setText(isOpenDirectory ? QFileDialog::tr("&Open") : acceptLabel);
您需要安装一个QTranslator
,将&Open
上下文中的QFileDialog
翻译为您想要的内容。
另请参阅Internationalization in Qt docs了解详情。
答案 2 :(得分:0)
您可以使用QFileDialog
中的static functions之一。那些使用来自操作系统的本机文件对话框,它将使用正确的语言环境和翻译。