我有一個QLineEdit
與InputMask
設置爲">AAAA90"
,也就是說,我希望文本正好由4個大寫Ascii字母和1-2個數字組成。但是,如果用戶鍵入「AA1」,則QLineEdit
將顯示AA 1
,即它將插入兩個空白並在第5個位置打印允許的「1」。我寧願在任何位置都想要使用非法字符的行爲,即如果用戶鍵入「AA%」,則光標停留在第三個位置並且不打印「%」字符。QLineEdit InputMask和空白插入
這是可能的QT5?
我有一個QLineEdit
與InputMask
設置爲">AAAA90"
,也就是說,我希望文本正好由4個大寫Ascii字母和1-2個數字組成。但是,如果用戶鍵入「AA1」,則QLineEdit
將顯示AA 1
,即它將插入兩個空白並在第5個位置打印允許的「1」。我寧願在任何位置都想要使用非法字符的行爲,即如果用戶鍵入「AA%」,則光標停留在第三個位置並且不打印「%」字符。QLineEdit InputMask和空白插入
這是可能的QT5?
感謝@Mike對QValidator尖,我結束了掛鉤一個驗證像
QRegExp rgx("[a-zA-Z]{4}\\d{1,2}");
QValidator *comValidator = new QRegExpValidator (rgx, this);
comLineEdit->setValidator(comValidator);
並與掛鉤textEdited
:
void MainWindow::comTextEdited(const QString &arg1)
{
qobject_cast<QLineEdit*>(sender())->setText(arg1.toUpper());
}
到了第4個字符強制爲大寫。
請注意,雖然在GUI中插入了空格以提高可讀性,但輸入掩碼不會在返回的文本中插入空格(即返回值爲QLineEdit::text()
方法)。
爲了更明確,輸入掩碼使QLineEdit
S能夠工作覆蓋模式不插入模式。但設置QValidator
離開QLineEdit
工作在插入模式不變。
例如,如果您鍵入"AA3"
,GUI顯示"AA 3"
,但text()
方法返回AA3
。如果現在將光標移回第3位並鍵入"B"
,則GUI將顯示"AAB 3"
(不是"AAB 3"
,因爲我們在覆蓋模式)和text()
方法返回"AAB3"
。
那麼,前四個字母是否允許空格? – Mike
這絕對有可能,請看['QValidator'](https://doc.qt.io/qt-5/qvalidator.html)。 – Mike