核心构思
核心的点在于,限制输入的字数;主要的方法为创建一个组合窗口
-
textChanged
这个信号,会在你输入字符之后发射,可以连接这个信号,在发射了信号之后,去获取当前QTextEdit
里的内容,获取数量,然后根据最大数量,来选择是不是需要截取文本; -
光标的移动的问题。在进行插入时,光标要时刻保持在当前位置。
-
文字内容的行高。这里请看Qt设置QTextEdit的行高_师从名剑山的博客-CSDN博客_qt qtextedit 高度
代码实现
// 首先连接信号 connect(ui->textEdit, &QTextEdit::textChanged, this, &LimitTextEdit::slot_handleInput); void LimitTextEdit::slot_handleInput() { auto textEdit = static_cast<QTextEdit*>(sender()); int currentNum = textEdit->toPlainText().length(); // 判断是不是超出了字数限制 if (currentNum > m_maxWordNum) { QString text = textEdit->toPlainText(); text = text.mid(0, m_maxWordNum); int position = textEdit->textCursor().position(); textEdit->setText(text); // 获取光标位置 QTextCursor cursor = textEdit->textCursor(); if (position > m_maxWordNum) { // 如果当前输入位置为末尾的话,就直接跳到最后一个字符。 position = m_maxWordNum; } cursor.setPosition(position); textEdit->setTextCursor(cursor); currentNum = m_maxWordNum; } ui->labelCurrentNum->setNum(currentNum); }
热门文章
- 3月10日 - 最高速度19M/S,2025年Surfboard每天更新免费节点订阅链接,干净IP机场推荐
- 建议穷人养的10种猫布偶猫的品种有哪些(布偶什么猫)
- JavaScript如何将字符串的字母映射到数组的对象
- 动物疫苗公司排名前十(动物疫苗上市公司排名)
- 狗粮颗粒机视频(狗粮颗粒机视频讲解)
- 4月2日 - 最高速度18M/S,2025年Surfboard每天更新免费节点订阅链接,干净IP机场推荐
- Envoy熔断限流实践基于Rainbond插件实现熔断
- 猫根本不必打狂犬(10种图片猫抓破皮不需要打针)
- 3月4日 - 最高速度18.3M/S,2025年Surfboard每天更新免费节点订阅链接,干净IP机场推荐
- 宠物领养协议文案范文图片 宠物领养协议文案范文图片大全