要讓輸入框隻能輸入IP位址,首先會想到的就是使用正規表達式。QLineEdit也支援使用正規表達式,就像這樣:
QLineEdit支援設定驗證器來限制輸入的内容,QRegExpValidator是其中一種。正規表達式寫法有很多,以上的表達式可以參考一下:
b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)b
QLineEdit還有另一種方式來限制輸入的内容,那就是設定掩碼(setInputMask),例如:
分号前面的0表示可以輸入任何數字,也可以不輸入。分号後面的"_"表示沒有輸入地方用"_"替代。分隔0的點則直接顯示出來。設定掩碼後我們隻能輸入掩碼所占的位置。如下
我們使用了xxxx占了四個位置(小寫x表示可以輸入任意字元),是以在QLineEdit中最多隻能輸入四個字元。可用掩碼及其含義可以參考下圖:
直接使用掩碼方式不能很好的限制IP的輸入,因為沒辦法控制範圍,但是有個好處是它可以把點先顯示出來。讓人更容易了解要輸入的是什麼。可以結合驗證器和掩碼
測試環境:Qt5.9.6