我想将使用本机操作系统组件的QfileDialog转换为与当前操作系统语言环境语言不同的特定语言。
QFileDialog::DontUseNativeDialog
选项允许翻译Qt小部件,但它是一个旧的disigned,我不喜欢使用它,如果可能的其他解决方案。
我找到了以下内容:
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") );
但这并没有翻译“取消”按钮。它只适用于“打开”和“文件名”标签。
有人可以告诉我如何修复“取消”按钮或者它有什么问题吗?
欢迎任何其他解决方案。
答案 0 :(得分:1)
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开发人员,它尚未关闭,但它的优先级较低。
我知道,不是你想要的答案。