正则表达式处理输入十六进制数,每隔2个数字隔开

来源:互联网 发布:仿2017小米商城源码 编辑:程序博客网 时间:2024/04/30 09:15
QString SysUtils::formatHexString(constQString &hex)
{
    QString hexStr(hex);
    QRegExp rx("([0-9A-Fa-f]{1,2})");
    QStringList list;
    int pos = 0;
    while ((pos = rx.indexIn(hexStr, pos)) != -1) {
        list << rx.cap(1);
        pos += rx.matchedLength();
    }
    return list.join(" ");
}
 
void MainWindow::HandleText()
{
    disconnect (ui->SendtextEdit,SIGNAL(textChanged()),this,SLOT(HandleText()));

QTextCursortextCursor=ui->SendtextEdit->textCursor();

    intrecordPos=textCursor.position();//记录光标位置

    QStringtxt=ui->SendtextEdit->toPlainText();//读取待处理字符串

    QStringtmp=txt;

    tmp=tmp.replace("","");//去掉待处理字符串空格

    QStringhexStr=SysUtils::formatHexString(tmp);

    ui->SendtextEdit->setText(hexStr);

    if(recordPos>0)

    {

        QStringch=hexStr.mid(recordPos-1,1);

        qDebug()<<ch;

        if(ch=="")

            recordPos++;

    }

    textCursor.setPosition(recordPos);

    ui->SendtextEdit->setTextCursor(textCursor);

connect (ui->SendtextEdit,SIGNAL(textChanged()),this,SLOT(HandleText()));

}

 

原创粉丝点击