gpt4 book ai didi

c++ - 如果 Qt 不是十六进制,则 Qt 从 QLineEdit 中删除字符

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:19 26 4
gpt4 key购买 nike

我的 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");

}

}

我正在使用 QLineEdit 的 textChanged 插槽,因为我需要在每个字符输入后执行检查。我不知道如何更改 QLineEdit 中的值,即在警告消息框中单击“确定”后,应删除最后一个无效字符。我怎样才能做到这一点?

最佳答案

不要重新发明轮子 ;) 使用专为实现您的目标而设计的 Qt 工具,您可能会获得更好的结果。

QLineEdit::mask让您定义编辑控件中允许使用的字符。特别是,使用 H 字符定义掩码将使您能够确定控件中允许使用多少个十六进制字符。

如果这还不足以满足您的需求,请环顾四周 validators用于更复杂和完整的验证过程。

关于c++ - 如果 Qt 不是十六进制,则 Qt 从 QLineEdit 中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44799674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com