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

标签 c++ string qt

我的 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/

相关文章:

c++ - 何时重载逗号运算符?

c++ - QT:无法在启动/停止按钮中终止 Qprocess

c++ - 从普通数组创建 QList

c++ - 用 C++ 编写文本/二进制文件最优雅的方法是什么?

c++ - Qt:保存 Qt-creator 应用程序的 SQLite 数据库的最佳 "Path"在哪里?

c++ - 是不是临时左值?

c++ - 从 WAV 文件中获取实际值 C++

C++ 字符串输入作为 if/else 语句条件

ruby - 如何拆分角色并保持值(value)

eclipse - 如何通过 JSP 中的按钮单击来调用函数