我的Qt应用程序中有一个QLineEdit需要以十六进制值作为输入.如果输入的字符不是十六进制,我希望应用程序显示警告消息框,并从QLineEdit中删除无效字符.必须在QLineEdit中每个字符的条目处执行此检查.到目前为止,我有这个:
void MemoryTestWindow::on_lineEditAddress1_textChanged(const QString &arg1)
{
QString text1=ui->lineEditAddress1->text();
int len=text1.length();
QChar ch=text1.at(len-1).toUpper();
if(!((ch>='A'&& ch<='F')|| (ch>='0' && ch<='9')))
{
text1.remove(len-1,1);
//*arg1="";
QMessageBox::warning(this,"Invalid Character!","Please enter hexadecimal characters 0-9, A-F");
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用QLineEdit的textChanged插槽,因为我需要在每个字符输入后执行检查.我无法想象如何更改QLineEdit中的值,即在警告消息框中单击"确定"后应删除最后一个无效字符.我怎样才能做到这一点?
不要重新发明轮子;)使用旨在实现您想要的Qt工具,您可能会获得更好的结果.
QLineEdit :: mask允许您定义编辑控件中允许的字符.特别是,使用H字符定义掩码将允许您确定控件中允许的十六进制字符数.
如果这不足以满足您的要求,请查看验证程序以获得更复杂和完整的验证过程.
| 归档时间: |
|
| 查看次数: |
730 次 |
| 最近记录: |