Qt 十六进制输入掩码

Qt 十六进制输入掩码,qt,input-mask,Qt,Input Mask,QTextEdit需要以这样的方式进行调整,即它应该在每2个符号后放置空格,并且应该检查这些符号是否在0到9或从A到F的集合中。 例如,我输入a2324Fcd并获取A2 32 4F CD,您可以执行以下操作: QLineEdit le; le.setInputMask("HH HH HH"); // Extend if more characters needed. le.show(); 顺便说一句,QTextEdit似乎不支持输入掩码。您可以手动实现此行为: void MainWindow:

QTextEdit需要以这样的方式进行调整,即它应该在每2个符号后放置空格,并且应该检查这些符号是否在0到9或从A到F的集合中。
例如,我输入a2324Fcd并获取A2 32 4F CD,您可以执行以下操作:

QLineEdit le;
le.setInputMask("HH HH HH"); // Extend if more characters needed.
le.show();

顺便说一句,
QTextEdit
似乎不支持输入掩码。

您可以手动实现此行为:

void MainWindow::on_textEdit_textChanged() {
  QString text = ui->textEdit->toPlainText().toUpper();
  text.replace(QRegExp("[^A-F]"), "");
  QStringList tokens;
  for(int i = 0; i < text.length(); i += 2) {
    tokens << text.mid(i, 2);
  }
  ui->textEdit->blockSignals(true);
  ui->textEdit->setText(tokens.join(" "));
  ui->textEdit->moveCursor(QTextCursor::EndOfBlock);
  ui->textEdit->blockSignals(false);
}
void主窗口::on_textEdit_textChanged(){
QString text=ui->textEdit->toPlainText().toUpper();
文本。替换(QRegExp(“[^A-F]”,”);
QStringList代币;
对于(int i=0;i块信号(真);
用户界面->文本编辑->设置文本(tokens.join(“”);
用户界面->文本编辑->移动光标(QTextCursor::EndOfBlock);
用户界面->文本编辑->块信号(假);
}

注意,这个实现很难在中间行编辑文本。如果是一个问题,需要更复杂的实现。

输入掩码,它就像一个抽象的概念。我需要输入一个不知道长度的QRegExp,你指的是从0到9或从a到f的“[[^ 0f]”)。