0

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

4

2 回答 2

1

您可以手动实现此行为:

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);
}

请注意,此实现使编辑行中间的文本变得困难。如果这是一个问题,则需要更复杂的实现。

于 2014-02-06T19:40:43.920 回答
0

您可以执行以下操作:

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

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

于 2014-02-06T13:41:57.520 回答