Qt常用控件之多行输入框QTextEdit

多行输入框QTextEdit

QTextEdit 是一个多行输入框控件,支持富文本和 markdown 格式,当文本内容超出编辑框的范围时能自动提供滚动条。

QPlainTextEdit 是只支持富文本格式的多行输入框,属性和使用上与 QTextEdit 几乎没有区别。

QTextEdit属性

属性 说明
markdown 输入框内容,支持 markdown 格式,将 markdown 文本转化成 html 。
html 输入框内容,支持大部分 html 标签,包括 img 和 table 等。
placeHolderText 输入框为空时显示的内容。
readOnly 是否是只读的。
undoRedoEnable 是否开启撤回和反撤回功能(即 Ctrl + z 和 Ctrl + y)。
autoFormating 开启自动格式化。
tabstopWidth 按下 tab 缩进多少空间。
overwriteMode 是否开启覆写模式(即光标在文本中间时,输入的内容会覆盖光标后面的内容)。
acceptRichText 是否接收富文本内容。
verticalScrollBarPolicy 垂直方向滚动条的出现策略。 Qt::ScrollBarAsNeeded 为根据内容自动决定是否需要滚动条(默认值);Qt::ScrollBarAlawysOff 总是关闭滚动条;Qt::ScrollBarAlawysOn 总是显示滚动条。
horizontalScrollBarPolicy 水平方向滚动条的出现策略。 Qt::ScrollBarAsNeeded 为根据内容自动决定是否需要滚动条(默认值);Qt::ScrollBarAlawysOff 总是关闭滚动条;Qt::ScrollBarAlawysOn 总是显示滚动条。

注意,将 QTextEdit 的内容获取为 html 格式的接口是 toPlainText()

QTextEdit信号

信号 说明
textChanged() 文本内容改变时触发。
selectionChanged() 选中范围改变时触发。
cursorPositionChanged() 光标移动时触发。
undoAvailable(bool) 可以进行 undo 操作时触发。(很少使用)
redoAvailable(bool) 可以进行 redo 操作时触发。(很少使用)
copyAvaiable(bool) 文本被选中/取消选中时触发。

代码获取QTextEdit输入框的内容

通过 toPlainTextEdit() 接口获取输入框的内容,注意返回值是 const QString 类型:

cpp 复制代码
//widget.cpp
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_textEdit_textChanged()
{
    const QString& content=ui->textEdit->toPlainText();

    ui->lineEdit->setText(content);
}

代码获取QTextEdit的光标位置和选中内容

QTextEdit 中包含了⼀个 QTextCursor 对象,通过这个对象可以获取到当前光标位置和选中的内容。

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_textEdit_cursorPositionChanged()
{
    const QTextCursor& cursor=ui->textEdit->textCursor();
    qDebug()<<"PositionChangedTo:"<<cursor.position();
}

void Widget::on_textEdit_selectionChanged()
{
    const QTextCursor& cursor=ui->textEdit->textCursor();
    qDebug()<<"selectChangedTo:"<<cursor.selectedText();
}

当光标处于不同的位置时, cursor.position() 获取当前光标的位置。

当光标选中不同的子串时,cursor.selectedText() 可以获取选中的内容。

相关推荐
charlie11451419116 小时前
从 0 开始的机器学习——NumPy 线性代数部分
开发语言·人工智能·学习·线性代数·算法·机器学习·numpy
王老师青少年编程16 小时前
2025年12月GESP真题及题解(C++七级): 城市规划
c++·gesp·csp·信奥赛·七级·csp-s·提高组
catchadmin17 小时前
Laravel12 + Vue3 的免费可商用商业级管理后台 CatchAdmin V5 正式发布
开发语言·php
袁气满满~_~17 小时前
Python数据分析学习
开发语言·笔记·python·学习
寻星探路17 小时前
【算法专题】滑动窗口:从“无重复字符”到“字母异位词”的深度剖析
java·开发语言·c++·人工智能·python·算法·ai
程序员小白条17 小时前
面试 Java 基础八股文十问十答第八期
java·开发语言·数据库·spring·面试·职场和发展·毕设
Dxy123931021617 小时前
python连接minio报错:‘SSL routines‘, ‘ssl3_get_record‘, ‘wrong version number‘
开发语言·python·ssl
大王小生17 小时前
C# CancellationToken
开发语言·c#·token·cancellation
listhi52017 小时前
基于C#实现屏幕放大镜功能
开发语言·c#
我叫袁小陌18 小时前
C++多线程全面详解
开发语言·c++