首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QFileDialog动态翻译

QFileDialog动态翻译
EN

Stack Overflow用户
提问于 2014-03-30 20:16:05
回答 1查看 1.1K关注 0票数 0

这个问题有unfortunately been asked before,但我在这里要发疯了。在我的Qt应用程序中,用户能够动态地更改语言,这种语言非常适合我自己的翻译。它不适用于我对QFileDialog的调用。相应的守则:

代码语言:javascript
复制
void myapp::change_language(std::string& lang_str){
    // my own translations works
    qApp->removeTranslator(&this->app_lang);
    this->app_lang.load(QString::fromStdString(lang_str));
    qApp->installTranslator(&this->app_lang);

    // system translations, works not for qfiledialog
    qApp->removeTranslator(&this->app_lang_qt);
    bool test = this->app_lang_qt.load("qt_fr.qm"); // returns true
    qApp->installTranslator(&this->app_lang_qt);
}

代码语言:javascript
复制
void myapp::changeEvent(QEvent* event){
    if(event->type() == QEvent::LanguageChange){
        this->ui.retranslateUi(this);
    }
    QMainWindow::changeEvent(event);
}

使用

代码语言:javascript
复制
QTranslator app_lang;
QTranslator app_lang_qt;

固定字符串"qt_fr.qm“只是为了测试目的,因为法语很容易被检测到。

我想要的是在对QFileDialog和QMessageBox的静态调用中更改语言,但语言只在QMessageBox中更改,而不是在QFileDialog中更改。对于这两个类,我只调用静态成员,这不可能是问题。我还试图在main.cpp中安装这个翻译程序,结果是相同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-31 23:06:25

默认情况下,QFileDialog将使用本机文件浏览器,而不是基于Qt的自定义对话框。本机文件浏览器将使用OS语言,而不是Qt语言,并且不会将Qt翻译应用于它。可以使用用于DontUseNativeDialogQFileDialog选项覆盖此行为。

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

https://stackoverflow.com/questions/22749267

复制
相关文章

相似问题

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