QLineEdit遮蔽中文輸入法

2021-08-02 18:43:30 字數 752 閱讀 7621

在專案中遇到乙個qlineedit作為密碼輸入框, 此時需要遮蔽中文輸入法, 注意它與不能輸入中文是不等價的, 不能輸入中文可以用正規表示式validator解決

試了下面幾種方法:

1.

himc _imc;

hwnd hwnd = (hwnd)this->winid();

_imc = immgetcontext(hwnd);

if (hwnd && iswindow(hwnd))

這個方法並不好用, 經過嘗試, 它只對this為window的情況適用, 當this是乙個窗體中的控制項時, 並不起作用,  而且不保證總是有用, 具體原因不清楚..

2. void  setinputmethodhints(qt::inputmethodhints hints)

這個函式呼叫以後根本沒啥作用, 不管引數給什麼

3. 正確的方法

只在遮蔽輸入法的qlineedit上呼叫

setattribute(qt::wa_inputmethodenabled, false)
這是qt官方給出的是否啟用輸入法的屬性, 在assistant中說的很清楚,

qt::wa_inputmethodenabled

14enables input methods for asian languages. must be set when creating custom text editing widgets.

QLineEdit 實現ip輸入

工程目錄如下 建立乙個 基於qwidget 的空白工程,新增 c class 也就是 iplineedit.cpp 和 iplienedit.h 這兩個檔案,新新增的用於繼承 qlineedit 類重新寫乙個用於ip輸入的類 iplineedit.cpp 檔案內容 include iplineedi...

控制QLineEdit的輸入範圍

1.使用正規表示式檢驗qlineedit的輸入範圍 如下 include include qlineedit lineedit new qlineedit this qregexp regexp a za z 1 9 0 9 1 9 0 9 和 1 9 d 上面的正規表示式表示只能輸入大於0的正整數...

限制QLineEdit的數值輸入範圍

在使用qlineedit輸入數值時,經常遇到限制其範圍的需要,比如角太陽高度角範圍為 90,90 經度值範圍 180,180 方位角範圍 0,360 qt提供了qintvalidator和qdoublevalidator可以限定數值輸入範圍,如使用qintvalidator限制整數的數值範圍 例1 ...