Там нет стандартного механизма для установки значка в зависимости от местности в Qt. Тем не менее, писать свой собственный механизм очень просто.
IMO, используя tr
в вашем коде, является избыточным. Этот способ является гораздо более гибким:
// Get current system locale:
const QString LOCALE = QLocale::system().name(); // For example, result is "en_US"
// Extract language code from the previously obtained locale:
const QString LANG = LOCALE.split('_').at(0); // Result is "en"
// Path to our icons:
const QString PATH = QString(QApplication::applicationDirPath() + "/images");
// Build the path to the icon file:
const QString ICON = QString("%1/icon_%2.png").arg(PATH, LANG);
// Check if the icon for the current locale exists:
if (QFile::exists(ICON)) {
// Set this icon for our window:
setWindowIcon(QPixmap(ICON));
}
else {
// Otherwise fallback to the default icon:
setWindowIcon(QPixmap(PATH + "/icon_default.png"));
}
Как правило, техника, которую вы опубликовали, верна. Только несколько замечаний о вашем коде:
вы можете получить язык из QtLocale, а затем преобразовать его в строку с 'languageToString'. в вашем файле/каталоге resoucrce, создайте папку для каждого языка и заполните соответствующие значки. используйте строку langauge, чтобы найти правильный путь. http: //doc.qt.io/qt-4.8/qlocale.html#language –