首页 > 其他分享 >QFileDialog取消按钮显示英文的问题?

QFileDialog取消按钮显示英文的问题?

时间:2022-12-22 12:11:50浏览次数:42  
标签:QDialogButtonBox 英文 button QFileDialog QPushButton 按钮 setText

1.问题描述

设置了语言为中文,但是打开之后,可是QFileDialog打开之后还是取消按钮始终是cancel,不会变,打开按钮初始状态也是open,点击选中某个文件夹时,才会时打开;

MultiFileDirDialog::MultiFileDirDialog(QWidget *parent)
    : QFileDialog(parent)
{
    setOption(QFileDialog::DontUseNativeDialog, true);
    //支持多选
    QListView *listView = findChild<QListView*>("listView");
    if (listView)
        listView->setSelectionMode(QAbstractItemView::ExtendedSelection);
    QTreeView *treeView = findChild<QTreeView*>();
    if (treeView)
        treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
//获取打开确认按钮 QDialogButtonBox *button = findChild<QDialogButtonBox *>("buttonBox"); if (button) { button->clear(); QPushButton* accpetbutton = new QPushButton(button); accpetbutton->setText("确定"); button->addButton((QAbstractButton*)accpetbutton, QDialogButtonBox::AcceptRole); QPushButton* cancel = new QPushButton(button); cancel->setText("取消"); button->addButton((QAbstractButton*)cancel, QDialogButtonBox::RejectRole); /*button->button(QDialogButtonBox::Ok)->setText(tr("确定")); button->button(QDialogButtonBox::Cancel)->setText(tr("取消"));*/ disconnect(button, SIGNAL(accepted()), this, SLOT(accept()));//使链接失效 connect(button, SIGNAL(accepted()), this, SLOT(go()));//改成自己的槽 } //无效 //setLabelText(QFileDialog::FileName, "选择文件:");//英文化文件名称 //setLabelText(QFileDialog::Reject, "取消");//英文化取消按钮 //setLabelText(QFileDialog::Accept, "选择");//英文化打开按钮 }

 

尝试方法

(1)安装语言 无效

static QTranslator qtTranslator;;
bool loaded = qtTranslator.load(QDir::currentPath() + "/translations/qt_zh_CN.qm");
//bool loaded=qtTranslator->load(":/language/Resources/language/qt_zh_CN.qm");
loaded= a.installTranslator(&qtTranslator);

(2)编辑qt_zh_CN.ts文件 无效

发现QFileDialog的中用QDialogButtonBox按钮中已经包含取消的翻译,只是没有起作用;

 

 

 

(3)setLabelText用函数去设置 无效

//setLabelText(QFileDialog::FileName, "选择文件:");//英文化文件名称
//setLabelText(QFileDialog::Reject, "取消");//英文化取消按钮
//setLabelText(QFileDialog::Accept, "选择");//英文化打开按钮

(4)获取按钮之后设置 无效

button->button(QDialogButtonBox::Ok)->setText(tr("确定"));
button->button(QDialogButtonBox::Cancel)->setText(tr("取消"));

解决办法

查看了QFileDialog的源码才知道要怎么搞,QFiledialog的界面如下所示,再去研究下QDialogButtonBox ,你会恍然大悟;

 

 

如下所示,获取按钮之后,直接new QPushButton,设置进去,就可以了;

QDialogButtonBox *button = findChild<QDialogButtonBox *>("buttonBox");
    
    if (button)
    {
        button->clear();
        QPushButton* accpetbutton = new QPushButton(button);
        accpetbutton->setText("确定");
        button->addButton((QAbstractButton*)accpetbutton, QDialogButtonBox::AcceptRole);
        QPushButton* cancel = new QPushButton(button);
        cancel->setText("取消");
        button->addButton((QAbstractButton*)cancel, QDialogButtonBox::RejectRole);
        disconnect(button, SIGNAL(accepted()), this, SLOT(accept()));//使链接失效
        connect(button, SIGNAL(accepted()), this, SLOT(go()));//改成自己的槽
    }

效果如下图所示:

 

 

 但是里面显示的内容还是英文,我的计算机显示的My computer;还待解决!

 

标签:QDialogButtonBox,英文,button,QFileDialog,QPushButton,按钮,setText
From: https://www.cnblogs.com/bclshuai/p/16998095.html

相关文章