1. 程式人生 > >【Qt】Qt國際化(系統文字-QMessageBox按鈕、QLineEdit右鍵選單等)【轉】

【Qt】Qt國際化(系統文字-QMessageBox按鈕、QLineEdit右鍵選單等)【轉】

簡介

使用Qt的時候,經常會遇到英文問題,例如:QMessageBox中的按鈕、QLineEdit、QSpinBox、QScrollBar中的右鍵選單等。通常情況下,我們軟體都不會是純英文的,那麼如何處理這些問題呢?其實這也屬於國際化的一部分。

這裡寫圖片描述 這裡寫圖片描述 這裡寫圖片描述

下面,以中英文切換為例來為大家分享,其它語言切換類似。

查詢翻譯檔案

  • qt_zh_CN.qm

見名知義,這正是處理中文的翻譯檔案。

我們可以從Qt的安裝目錄中找到它,以我的目錄為例:D:\Qt\Qt5.5.1\5.5\msvc2013\translations。

如果沒有此檔案,不用著急,我們可以查詢此檔案對應的翻譯源qt_zh_CN.ts。然後使用lrelease,生成對應的qt_zh_CN.qm檔案。

載入翻譯檔案

QTranslator translator;  
translator.load(":/qm/qt_zh_CN.qm");  
qApp->installTranslator(&translator); 

有點意思,這樣很快的就處理為中文了。

這裡寫圖片描述 這裡寫圖片描述 這裡寫圖片描述

切換語言

載入為中文之後,假設我們存在多語言切換問題,那麼當我把語言切換為中文後,之前的qt_zh_CN.qm已經載入了,如何再切換回來呢?

好了,既然存在load,那麼不出意外地話也會存在unload吧。不好意思,翻完所有的API我們並沒有發現此介面!

繼續分析,installTranslator是安裝翻譯檔案的意思,那麼我們可以想辦法把它解除安裝掉,通過查詢我們很容易發現removeTranslator介面。

官網對此介面的的解釋為:Removes the translation file translationFile from the list of translation files used by this application. (It does not delete the translation file from the file system.)

也就是說:從翻譯檔案列表中移除翻譯檔案後,並沒有從檔案系統中刪除翻譯檔案。

那麼也就是說,通過呼叫此介面,就可以移除翻譯檔案了。翻譯檔案一旦被移除,那麼之前所載入的對應語言也就無效了。

if (language != MyApp::English
) { m_systemTranslator.load(QString(":/qm/qt_zh_CN.qm")); qApp->installTranslator(&translator); } else { qApp->removeTranslator(&translator); }

如上,切換語言的時候判斷當前語言,如果為中文則載入qt_zh_CN.qm翻譯檔案,然後安裝翻譯器。否則,進行解除安裝!

這樣,載入對應語言的時候,無論是自定義的文字,還是系統文字,我們都可以自由的切換了。

相關推薦

QtQt國際化(系統文字-QMessageBox按鈕QLineEdit選單)

簡介 使用Qt的時候,經常會遇到英文問題,例如:QMessageBox中的按鈕、QLineEdit、QSpinBox、QScrollBar中的右鍵選單等。通常情況下,我們軟體都不會是純英文的,那麼如何處理這些問題呢?其實這也屬於國際化的一部分。 下面,以中英文切換為例來為大家分享,其它語言切換

QtQt之密碼框不可選中複製貼上選單

簡述 在做使用者登入、修改密碼的時候,往往會用到密碼框,其中一些功能要求與普通的輸入框不同,例如:不能選中、複製、貼上、無右鍵選單等功能,當然設定密碼不可見是必須的! 下面介紹兩種方式來實現相同的效果。 簡述 效果 基礎部分 事件過濾器 介面說明 實現方式 事件重

ZedGraph刪除或重新命名(漢化)選單

本文結合網路資源,結合自身實踐進行了部分整理和改動,現逐步完善中,內容僅供參考。 網路資源部分轉載自:http://blog.sina.com.cn/main_v5/ria/private.html?uid=1806259402 在zedgraph生成的圖表中,右鍵選單會出

[Tricks] 為資料夾選單增加 使用VS Code 開啟

傳統的IDE安裝之後都會在資料夾的右鍵選單中增加如【Open in Visual Studio】或者【Open Folder as IntelliJ IDEA Project】這樣的選項 但VS Code作為一個輕量級的Editor安裝完畢之後並沒有這個選單,這裡手動通過修改登錄檔來增加這個選單 使用cmd開

Qt選單工具欄狀態列選單的實現

在QMainWidget基礎上實現選單欄、工具欄、狀態列、右鍵選單。 標頭檔案: #ifndef GWDEMO_H #define GWDEMO_H #include <QMainWindow> #include <QMenu> #include <Q

設計模式之單例模式內附物件例項化幾種方式實現執行緒安全幾種方式

繼續來複習常用的設計模式-單例模式,順便回憶一下執行緒安全的幾種實現方式。 一、什麼是單例模式 單例模式,簡單常用的一種設計模式,也很好的體現了程式碼控制物件在記憶體數量的一種方式,主要分2種實現方式: ①餓漢式,執行緒安全 ②懶漢式,執行緒不安全(新增鎖機制,可以實現執行緒安全)

原創MAC利用AUTOMATOR製作選單獲取MARKDOWN圖片外鏈

PicUploader 是一個用php編寫的藉助Mac的『自動操作/Automator』來幫助你快速上傳你的圖片到七牛雲/騰訊雲/網易雲/百度雲/阿里雲/京東雲/sm.ms並自動把地址拼接成markdown格式放到剪貼簿的小工具(故只有MacOS使用者能

Qt QListWidget QTreeWidget QComboBox控制元件中,禁用滾動條的選單

有時候在開發新控制元件的時候,會偶然點到滾動條的右鍵選單,出現之後很難看 那麼怎麼去掉呢? 其實很簡單,如果是QListWidget ,QTreeWidget控制元件, //記得包含標頭檔案 #i

Qt選單

1、右鍵選單建立和顯示作為一種互動性強、使用方便的右鍵選單在程式中是非常常用的,在Qt中可以輕鬆的實現。QMenu menu; //新增選單項,指定圖示、名稱、響應函式 menu.addAction(QIcon("1.png"), QStringLiteral("新增"),this,SLOT(OnBscGr

ZedGraph選單和滑鼠滾軸的移動縮放功能的啟用和禁用

本文是個人對使用過的【ZedGraph】基本功能的小結,現在逐步完善中... 通過【ZedGraph】控制元件屬性修改: 1.禁用右鍵選單: IsShowContextMenu = false; 2.禁用滑鼠滾軸移動: IsEnableHPan = false; //禁止橫

PyQt 選單的實現(Qt.CustomContextMenu方式)

從Qt文件Qt::ContextMenuPolicy的值可以看出,實現右鍵選單的方式有三種,這對於所有繼承於QWidget的類都是通用的,在用每一種方式實現之前都要呼叫QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy)方

javascript自定義選單並遮蔽預設選單原創

原理很簡單,就是右擊滑鼠(oncontextmenu事件)return false阻止預設右鍵選單,之後顯示自定義的右鍵選單,選單顯示位置由事件源的clientX和clientY計算得出。 [html] view plain copy  print?

Qt選單的新增

滑鼠事件是學習Qt必不可少的一個事件,初學者總是會忽略這一點,而右鍵選單在平常的使用中更是常見,下面就Qt中新增右鍵選單的幾種方法做一簡單的介紹: 1、滑鼠事件新增 /**重寫滑鼠處理器*/ void QWidget::mousePressEvent(QMo

Unity編輯器使用反射和Attribute實現自定義選單

unity提供了許多Attribute,比如[MenuItem]和[ContextMenu],一個是在編輯器選單欄中新增選單按鈕,一個是在檢視面板新增上下文選單,由於其原理是基於C#的Attribute功能,我們自然可以想到,是否可以自己編寫一套自定義Attribute,來

JQuery選單外掛——contextmenu

右鍵選單外掛可以繫結頁面中的任意元素,繫結後,選中元素,點選右鍵,便通過該外掛彈出一個快捷選單,點選選單各項名稱執行相應操作,呼叫程式碼如下: $(selector).contextMenu(menu

vbs 系統選單新建新增新建vbs選項

1.vbs系統右鍵新建選單選項 新增 新建 vbs檔案選項 filetype=".vbs" ' connect to WScript..Shell for registry access set WSHShell = CreateObject("WScript.Shell") ' r

notepad++ 重灌系統後 新增選單

安裝到D盤了,重做系統後,沒有了右鍵選單 將下面的內容儲存為aaa.reg檔案,win7以管理員許可權執行,路徑自己改 Windows Registry Editor Version 5.00 [H

JS學習筆記 - 自定義選單文字框只能輸入數字

  <script> // 事件總共有2個部分, //1.點選滑鼠右鍵的表現 oncontextmenu 2.點選滑鼠左鍵的表現(即普通點選onclick) // 點選右鍵,div位置定位到滑鼠所在位置, 且阻止滑鼠右鍵的預設選單 // 點選左

VC MFC系統托盤選單,滑鼠點選非選單區域使選單消失的問題

程式最小化到系統托盤後,右鍵單擊托盤圖示會顯示選單。 現在的問題是如果不點選選單上的選項選單就會一直存在,如何使滑鼠在選單視窗外單擊操作時選單消失? 就像桌面右鍵選單那樣。 CMenu menu;  menu.LoadMenu(IDR_MNU_TRAY); // 2 CMe

系統選單上新增程式

1:開始-執行-regedit-執行regedit(登錄檔編輯器) 2:定位到 : 計算機\HKEY_CLASSES_ROOT\Directory\shell 3:在shell下面建立子專案專案名怎麼好記怎麼取比如建一個notepad項   4:在notepad下面再建一個子項名字是comm