2

我的应用程序中有一个 QLineEdit,我应该能够在其中输入最多 10 字节的英文字符,在输入日文字符时,如果字符是 2 字节,我应该只能输入 5 个日文字符,如果是日文字符是一个1字节的字符,我应该可以输入10个日文字符。请帮我解决一下这个。

我尝试使用

QLineEdit::setMaxLength(10) 

但它只适用于英文字符,但不适用于日文字符。

任何想法/建议???

4

2 回答 2

2

请注意,用于字符的字节数完全取决于您使用哪种编码来存储它。 QString所有字符使用 2 个字节,但可能您对特定编码感兴趣,例如 UTF-8。我建议您不要使用setMaxLength您需要创建一个QValidator子类来实现您的特定验证规则并将其设置在您的行编辑中。

于 2013-03-25T11:52:23.117 回答
-1

我解决了我的问题如下:

在 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();

      }


 }

用俄语字符/日语字符等进行了很好的测试。

于 2013-03-26T05:20:26.730 回答