QKeySequence::toString()盡管檔案表明它應該可以作業,但我不能強制回傳翻譯的快捷方式表示。檔案說:“在“QShortcut”背景關系中使用 QObject::tr() 翻譯字串、“Ctrl”、“Shift”等。” 但我不完全確定快捷背景關系是什么意思。我可能做錯了什么......
這是我的例子。為了使它作業,我需要qtbase_es.qm從 Qt 安裝目錄復制到我的專案構建目錄。正確加載翻譯后,選單中的操作會正確顯示“Action Control Intro”,這是“Action Ctrl Enter”快捷方式的西班牙語翻譯。但是主視窗上的工具提示仍然是“Action (Ctrl Enter)”。我希望它是“操作(控制 介紹)”,就像在選單中一樣。我究竟做錯了什么?
#include <QAction>
#include <QApplication>
#include <QDebug>
#include <QMainWindow>
#include <QMenuBar>
#include <QTranslator>
int main(int argc, char *argv[])
{
QTranslator spanish;
qDebug() << spanish.load("qtbase_es.qm"); // should return true if correctly loaded
QApplication a(argc, argv);
QApplication::installTranslator(&spanish);
QMainWindow w;
auto menu = new QMenu("Menu");
auto action = menu->addAction("Action");
action->setShortcutContext(Qt::ApplicationShortcut);
action->setShortcut(Qt::CTRL | Qt::Key_Enter);
w.menuBar()->addMenu(menu);
w.show();
QApplication::processEvents(); // I also tried this line but it is useless...
w.setToolTip(QString("%1 (%2)").arg(action->text(), action->shortcut().toString()));
qDebug() << action->shortcut().toString(); // WRONG: returns Ctrl Enter but I expect Control Intro
return a.exec();
}
uj5u.com熱心網友回復:
該QShortcut::toString有一個SequenceFormat引數,默認為ProtableText。該格式的檔案說明,該可移植格式旨在用于例如寫入檔案。
本機格式旨在向用戶顯示,只有這種格式才能執行翻譯。
嘗試:
qDebug() << action->shortcut().toString(QKeySequence::NativeText);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/313883.html
