[英]translate a nativ OS fileDialog with Qt application
我想使用本機操作系統組件將我的 QfileDialog 翻譯成與當前操作系統語言環境不同的特定語言。 QFileDialog::DontUseNativeDialog
選項允許翻譯 Qt 小部件,但它是一個舊設計,如果有其他解決方案,我不喜歡使用它。 我發現以下內容:
QFileDialog d;
d.setLabelText( QFileDialog::Accept,tr("Open") );
d.setLabelText( QFileDialog::Reject,tr("Cancel") );
d.setLabelText( QFileDialog::FileName,tr("File name") );
d.setLabelText( QFileDialog::LookIn,tr("Look in") );
但這並沒有翻譯“取消”按鈕。 它僅適用於“打開”和“文件名”標簽。
有人可以告訴我如何修復“取消”按鈕或它有什么問題嗎?
歡迎任何其他解決方案。
你沒有做錯任何事。 它目前是 Qt 中的一個錯誤(錯誤跟蹤器: QTBUG-44112 )。 問題是,Qt 使用 IFileDialog 接口與本機 OS 文件對話框進行通信。 該界面不允許更改拒絕按鈕的標簽。 這是處理此本機對話框的重命名標簽的 Qt 代碼:
void QWindowsNativeFileDialogBase::setLabelText(QFileDialogOptions::DialogLabel l, const QString &text)
{
wchar_t *wText = const_cast<wchar_t *>(reinterpret_cast<const wchar_t *>(text.utf16()));
switch (l) {
case QFileDialogOptions::FileName:
m_fileDialog->SetFileNameLabel(wText);
break;
case QFileDialogOptions::Accept:
m_fileDialog->SetOkButtonLabel(wText);
break;
case QFileDialogOptions::LookIn:
case QFileDialogOptions::Reject:
case QFileDialogOptions::FileType:
case QFileDialogOptions::DialogLabelCount:
break;
}
}
如您所見,嘗試設置拒絕按鈕的標簽(或其他選項)只是被忽略了。 老實說,這不是 Qt 的最佳解決方案。 他們至少可以實現一個 qWarning() 或其他東西來告訴我們我們正在嘗試做的事情毫無意義。
反正這個bug已經很老了,已經分配給Qt開發者了,還沒有關閉,但是優先級不高。
我知道,不是你想要的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.