QFileDialog取消按鈕顯示英文的問題?

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;還待解決!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章