`
qimo601
  • 浏览: 3449200 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

QTextEdit设置最大可输入字符

    博客分类:
  • Qt
阅读更多

 

QTextEdit是没有可以直接调用的成员函数用来设置可输入字节数的最大限制。

 

这边是通过信号textChanged来实时监控输入,从而控制输入的。

 

实现方式如下:

 

1。定义自己的处理槽slotTextChanged()

 

2。connect槽slotTextChanged和信号editChanged。

 

3。实现slotTextChanged如下:

 

    QString textContent = this->toPlainText();

    int length = textContent.count();

    int maxLength = maxLen; // 最大字符数

    if(length > maxLength)

    {

        int position = this->textCursor().position();

        QTextCursor textCursor = this->textCursor();

        textContent.remove(position - (length - maxLength), length - maxLength);

        this->setText(textContent);

        textCursor.setPosition(position - (length - maxLength));

        this->setTextCursor(textCursor);

    }

 

尝试运行输入,我限制了最大10字节,确实只能输入10个字节。

 

 

 

源码:

 

 

// edit_message.cpp  
MsgTextEdit::MsgTextEdit(QWidget *parent) : QTextEdit(parent) {  
#ifdef im_support  
    connect(this, SIGNAL(msg_clicked(int &, int &)), keyBoard, SLOT(cinputline_im_clicked(int &, int &)));  
#endif  
    connect(this, SIGNAL(textChanged()), this, SLOT(textChanged()));  
}  
MsgTextEdit::~MsgTextEdit() {  
}  
void MsgTextEdit::textChanged() {  
    QString textContent = this->toPlainText();  
    int length = textContent.count();  
    int maxLength = this->getMaxLength(); // 最大字符数  
    if(length > maxLength) {  
        int position = this->textCursor().position();  
        QTextCursor textCursor = this->textCursor();  
        textContent.remove(position-(length-maxLength), length-maxLength);  
        this->setText(textContent);  
        textCursor.setPosition(position-(length-maxLength));  
        this->setTextCursor(textCursor);  
    }  
}  
void MsgTextEdit::setMaxLength(int maxLength) {  
    this->maxLength = maxLength;  
}  
int MsgTextEdit::getMaxLength() {  
    return this->maxLength;  
}  
void MsgTextEdit::mousePressEvent(QMouseEvent *event) {  
    QTextEdit::mousePressEvent(event);  
    // 第一个参数表表示坐标Y轴坐标,0 表示软键盘始终显示在最下方  
    // 第二个参数表示默认显示软键盘类型,0表示字母  
    int globalY = 0;  
    int defaultTextType = 0;  
    emit msg_clicked(globalY, defaultTextType);  
}  
// 不允许鼠标选中一段文本进行拖拽等等鼠标移动相关的事件  
void MsgTextEdit::mouseMoveEvent(QMouseEvent *) {  
}  

 

 

 

//edit_message.h  
// 编辑留言区域  
class MsgTextEdit : public QTextEdit {  
    Q_OBJECT  
    public:  
        MsgTextEdit(QWidget *parent = 0);  
        ~MsgTextEdit();  
        void setMaxLength(int maxLength);  
        int getMaxLength();  
    private slots:  
        void textChanged();  
    // 点击编辑发送留言内容界面  
signals:  
    void msg_clicked(int &globalY, int &defaultTextType);  
    protected:  
        void mousePressEvent(QMouseEvent *);  
        void mouseMoveEvent(QMouseEvent *e);  
    private:  
        int maxLength; // 最大输入字符数  
};  
 

 

分享到:
评论

相关推荐

    QTextEdit只接受数字输入工程完整源码

    当用户尝试输入非数字字符时,过滤器可以捕获这个事件并阻止它被传递到`QTextEdit`,从而实现数字输入的限制。具体实现时,需要继承`QObject`,并重写`eventFilter`方法,然后将该对象安装到`QTextEdit`上作为事件...

    QtextEdit 段 行间距设置源码

    在Qt框架中,QTextEdit是一个非常重要的部件,用于显示和编辑富文本。它支持多种格式,包括字体、颜色、图像、超链接等。在处理文本布局时,有时我们需要对段落进行定制,例如调整行间距和段间距,以增强文本的...

    QTextEdit限制输入个数.rar

    1.QQ:513187410 2.保证无毒 3.简单,方便,实用 4.实例可以自行改用 5.如有非法,本人无法律责任,由改动代码人负责! 6.需要更多本人作品,查找标签“朱建强” 7.请下载,杀毒后再使用!

    QT 打开连接 和QTextEdit添加超级连接例子

    在本例子中,我们关注的是如何在QT中实现两个功能:一是打开链接,二是向QTextEdit添加超级链接。 1. QT 打开链接: 在QT中,我们可以使用QDesktopServices类来打开一个URL链接。QDesktopServices提供了一些方便的...

    Qt textBrowser 怎么限制输入的文本大小?-CSDN论坛1

    它可以直接设置最大字符数限制,通过`setMaxLength()`函数即可实现。 总的来说,限制QTextBrowser的文本大小需要自定义逻辑来管理,同时要关注内存使用情况,以确保应用程序的稳定性和效率。在实际开发中,根据具体...

    QTextEdit内容写入文件

    当你需要将用户在QTextEdit中输入或编辑的内容保存到文件时,可以按照以下步骤操作。本示例将详细介绍如何将QTextEdit中的内容原封不动地写入文本文件,特别注意的是,这里的路径是固定的,没有动态获取用户指定路径...

    QTextEdit 实现 QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函数

    在某些场景下,我们可能希望QTextEdit具有QLineEdit的功能,比如设置占位符文本(setPlaceholderText())和限制输入的最大长度(setMaxLength())。本篇文章将深入探讨如何在QTextEdit中实现这两个功能。 首先,让...

    QTextEdit(多行文本框)

    `QTextEdit` 是 Qt 中用于多行文本输入和显示的控件,允许用户输入和编辑多行文本。以下是如何使用 `QTextEdit` 的说明和一个简单的示例: **使用说明:** 1. **创建 QTextEdit 对象:** ```cpp #include ...

    QTextEdit 实现 gif动画

    3. **处理GIF路径**:由于`QTextEdit`是基于本地文件系统的,所以你需要确保GIF文件(在这里是"animation.gif")与你的可执行文件在同一目录下。你可以使用`QCoreApplication::applicationDirPath()`获取应用的目录...

    Qt之QTextEdit拖拽显示 源码

    在`dragEnterEvent`中,我们应接受合适的拖放操作(如QDropEvent::Accepted),并设置适当的行动(如QDragEnterEvent::AcceptDrop)。`dragMoveEvent`一般不需要特别处理,而`dropEvent`则用于接收并处理实际的放下...

    汉子占两行的QTextEdit

    默认情况下,QTextEdit会按照字符的宽度来排列文本,每个字符占据相同的空间。但是,我们的目标是使汉字占用两行的空间,而字母和数字只占用一行,这就需要我们对QTextEdit的渲染机制进行定制。 要实现这个功能,...

    Qt中QTextEdit高度自适应

    当QTextEdit中输入的文字长度过长,QTextEdit就会出现滚动条。如果不想出现滚动条,而想QTextEdit的高度随着文字的增加或减少而改变。 //widget.h #ifndef WIDGET_H #define WIDGET_H #include #include #include #...

    QT自定义QTextEdit实现大数据的实时刷新显示源码

    这些方法可能包括插入文本、清空文本、设置刷新间隔、获取当前显示的数据块等。同时,这个头文件还可能包含了必要的继承和包含的QT库,使得自定义QTextEdit能够正确地与其它QT组件协同工作。 通过学习和理解这个...

    Animation in QTextEdit

    在Qt框架下,QTextEdit是一个非常实用的组件,它允许我们显示和编辑纯文本或富文本内容。在本文中,我们将深入探讨如何在QTextEdit中实现动画效果,这对于创建动态用户界面或者展示交互式信息非常有帮助。我们将讨论...

    PyQt使用QTextEdit实现文本编辑器功能,具有文本编辑器GUI界面

    5. **查找**:利用QTextEdit的find函数,可以实现文本查找功能,允许用户搜索特定字符串。 6. **撤销/重做**:QTextEdit提供了undo和redo方法,用于实现撤销和重做操作,这两个功能是基于编辑历史的。 7. **复制/...

    Qt例程源代码QTextEdit.7z

    QTextEdit提供了许多功能,如插入、删除文本,设置字体、颜色,以及添加图片、超链接等。此外,它还支持文本格式的转换和保存,使得开发者能够构建具有强大文本编辑功能的应用。 源代码示例可能包括以下几个方面: ...

    Qt QTextEdit 实现快捷键注释功能

    QTextEdit继承自QAbstractScrollArea,它可以接收用户输入并显示文本。在C++中,我们可以通过以下方式创建一个QTextEdit对象: ```cpp QTextEdit *textEdit = new QTextEdit(parent); ``` 接下来,我们将实现...

    带行号的QTextEdit

    "ShowJsonWidget.zip" 是一个包含特定QT组件的压缩包,它提供了一个具有行号功能的QTextEdit控件,专为显示和编辑JSON数据设计。在QT开发中,这样的控件对于处理和展示结构化数据非常有用,尤其在调试、日志查看或者...

    获取、过滤QTextEdit滚轮事件,改变滚动行数

    可以改变QTextEdit滚轮每次滚动的距离,利用事件过滤器,获取过滤QTextEdit的滚轮事件,修改每次滚动的距离

Global site tag (gtag.js) - Google Analytics