我的应用程序中有一个QLineEdit,我应该可以输入最多10个字节的英文字符,并且输入日文字符时,如果字符是2字节,我应该只能输入5个日文字符和如果日文字符是1字节字符,我应该能够输入10个日文字符。请 帮助我。
我尝试使用
QLineEdit::setMaxLength(10)
但它只是工作正常 英文字符,但没有日文字符。
任何想法/建议???
答案 0 :(得分:2)
请注意,字符使用的字节数完全取决于用于存储字符的编码。QString
对所有字符使用2个字节,但可能您对特定编码(如UTF)感兴趣-8。我建议您不要使用setMaxLength
,而是需要创建一个QValidator
子类来实现您的特定验证规则,并将其设置在行编辑上。
答案 1 :(得分:-1)
我解决了我的问题如下:
在LineEdit Slot中:
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();
}
}
经过俄语字符/日文字符等测试。