首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QFileDialog本地化

QFileDialog本地化
EN

Stack Overflow用户
提问于 2012-01-18 16:05:10
回答 3查看 3.9K关注 0票数 2

我的代码中使用了QFileDialog,如下所示:

代码语言:javascript
复制
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提供本地化字符串

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-24 17:33:32

我知道这已经被回答和接受了,但是正确的方法不是手动翻译Qt已经提供的,而是像这样加载Qt中包含的翻译:

代码语言:javascript
复制
 /* 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将翻译它已经知道的内容(比如它自己的小部件),并将使用应用程序提供的自定义翻译来完成其余的工作。

票数 5
EN

Stack Overflow用户

发布于 2012-01-18 18:33:39

"Open“字符串是硬编码的,但已转换为QFileDialog格式

代码语言:javascript
复制
void QFileDialogPrivate::_q_updateOkButton()
{
// ...
    if (acceptMode == QFileDialog::AcceptSave)
        button->setText(isOpenDirectory ? QFileDialog::tr("&Open") : acceptLabel);

您需要安装一个QTranslator来将QFileDialog上下文中的&Open转换为您想要的内容。

另请参阅Internationalization in Qt docs了解更多信息。

票数 1
EN

Stack Overflow用户

发布于 2012-01-19 03:13:02

您可以在QFileDialog中使用其中一个static functions。它们使用操作系统中的本机文件对话框,该对话框将采用正确的区域设置和翻译。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8906944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档