Qt实现带字数限制的文字输入框
更新时间:2022年04月09日 09:34:30 作者:师从名剑山
这篇文章介绍了Qt实现带字数限制文字输入框的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
核心构思
核心的点在于,限制输入的字数;主要的方法为创建一个组合窗口

textChanged这个信号,会在你输入字符之后发射,可以连接这个信号,在发射了信号之后,去获取当前QTextEdit里的内容,获取数量,然后根据最大数量,来选择是不是需要截取文本;光标的移动的问题。在进行插入时,光标要时刻保持在当前位置。
文字内容的行高。这里请看解决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);
}代码下载请看此处LimitTextEdit
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
C++实现Armadillo库与OpenCV库之间的数据格式转换
在C++领域,数据格式转换是常见且关键的任务,尤其是在使用多个不同的库进行复杂的数据处理时,Armadillo和OpenCV是两个在科学计算和计算机视觉领域非常受欢迎的库,下面我们将详细探讨如何在C++中实现Armadillo库与OpenCV库之间的数据格式转换,需要的朋友可以参考下2025-03-03
C语言的isatty函数和ttyname函数以及sendmsg函数用法
这篇文章主要介绍了C语言的isatty函数和ttyname函数以及sendmsg函数用法,是C语言入门学习中的基础知识,需要的朋友可以参考下2015-09-09
C++基于递归和非递归算法判定两个二叉树结构是否完全相同(结构和数据都相同)
这篇文章主要介绍了C++基于递归和非递归算法判定两个二叉树结构是否完全相同,若判断二叉树的结构和数据都相同则为完全相同.涉及C++二叉树的创建、遍历、比较等相关操作技巧,需要的朋友可以参考下2017-05-05


最新评论