我的应用程序中有一个 QLineEdit,我应该能够在其中输入最多 10 字节的英文字符,在输入日文字符时,如果字符是 2 字节,我应该只能输入 5 个日文字符,如果是日文字符是一个1字节的字符,我应该可以输入10个日文字符。请帮我解决一下这个。
我尝试使用
QLineEdit::setMaxLength(10)
但它只适用于英文字符,但不适用于日文字符。
任何想法/建议???
请注意,用于字符的字节数完全取决于您使用哪种编码来存储它。 QString
所有字符使用 2 个字节,但可能您对特定编码感兴趣,例如 UTF-8。我建议您不要使用setMaxLength
您需要创建一个QValidator
子类来实现您的特定验证规则并将其设置在您的行编辑中。
我解决了我的问题如下:
在 LineEdit 插槽中:
void ABC::on_abc_cmd_task_tableWidget_linedit_cellChanged(QString str)
{
QLineEdit *edit = qobject_cast<QLineEdit *>(sender());
if(edit)
{
QByteArray chkDataSize;
chkDataSize.clear();
chkDataSize.append(str);
int dSize = chkDataSize.size();
qDebug() << "total Bytes in text = " << dSize;
qDebug() << "Max length before = " << edit->maxLength();
if (dSize == edit->maxLength())
{
edit->setMaxLength(str.size());
}
qDebug() << "Max length after = " << edit->maxLength();
}
}
用俄语字符/日语字符等进行了很好的测试。