服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - Qt实现带字数限制的文字输入框

Qt实现带字数限制的文字输入框

2022-11-04 12:30师从名剑山 C/C++

这篇文章介绍了Qt实现带字数限制文字输入框的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

核心构思

核心的点在于,限制输入的字数;主要的方法为创建一个组合窗口

Qt实现带字数限制的文字输入框

  • textChanged 这个信号,会在你输入字符之后发射,可以连接这个信号,在发射了信号之后,去获取当前QTextEdit里的内容,获取数量,然后根据最大数量,来选择是不是需要截取文本;

  • 光标的移动的问题。在进行插入时,光标要时刻保持在当前位置。

  • 文字内容的行高。这里请看解决Qt设置QTextEdit行高的问题

代码实现

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 首先连接信号
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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/codegb/p/16120260.html

延伸 · 阅读

精彩推荐
  • C/C++C++智能指针之shared_ptr详解

    C++智能指针之shared_ptr详解

    这篇文章主要为大家详细介绍了C++智能指针之shared_ptr,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给...

    暮光6295882022-10-27
  • C/C++oaptt搭建http服务的过程详解

    oaptt搭建http服务的过程详解

    这篇文章主要介绍了oaptt搭建http服务,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    DeRoy8682022-10-12
  • C/C++C++ 中的INT_MAX,INT_MIN数值大小操作

    C++ 中的INT_MAX,INT_MIN数值大小操作

    这篇文章主要介绍了C++ 中的INT_MAX,INT_MIN数值大小操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    C++教程网9952021-10-26
  • C/C++C语言实现带头双向循环链表

    C语言实现带头双向循环链表

    本文主要介绍了C语言实现带头双向循环链表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    _奇奇10682022-10-31
  • C/C++linux根据pid获取进程名和获取进程pid(c语言获取pid)

    linux根据pid获取进程名和获取进程pid(c语言获取pid)

    status文件,第一行的Name即为进程名,C程序实现根据PID获取进程名和根据进程名获取PID,大家参考使用吧...

    C语言程序设计6772021-01-12
  • C/C++用C++实现队列的程序代码

    用C++实现队列的程序代码

    本篇文章是对使用C++实现队列的程序代码进行了详细的分析介绍,需要的朋友参考下...

    C++教程网1842020-12-13
  • C/C++类成员函数的重载、覆盖与隐藏之间的区别总结

    类成员函数的重载、覆盖与隐藏之间的区别总结

    以下是对类成员函数的重载、覆盖与隐藏之间的区别进行了详细的总结分析,需要的朋友可以过来参考下。希望对大家有所帮助...

    C语言教程网8782021-01-04
  • C/C++C语言实现三子棋的步骤和代码详解

    C语言实现三子棋的步骤和代码详解

    这篇文章主要介绍了C语言实现三子棋的步骤和代码详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的...

    Hidden.Blueee8092021-10-15