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() 可以获取选中的内容。

相关推荐
虾球xz23 分钟前
CppCon 2018 学习:EFFECTIVE REPLACEMENT OF DYNAMIC POLYMORPHISM WITH std::variant
开发语言·c++·学习
Allen_LVyingbo28 分钟前
Python常用医疗AI库以及案例解析(2025年版、上)
开发语言·人工智能·python·学习·健康医疗
小哈龙32 分钟前
裸仓库 + Git Bash 搭建 本地 Git 服务端与客户端
开发语言·git·bash
G探险者1 小时前
《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》
java·开发语言·rpc
weixin_437398212 小时前
转Go学习笔记
linux·服务器·开发语言·后端·架构·golang
津津有味道2 小时前
Qt C++串口SerialPort通讯发送指令读写NFC M1卡
linux·c++·qt·串口通信·serial·m1·nfc
StrongerIrene2 小时前
rs build 的process.env的值undefined解决方案
开发语言·javascript·ecmascript
风逸hhh2 小时前
python打卡day58@浙大疏锦行
开发语言·python
让我们一起加油好吗2 小时前
【C++】list 简介与模拟实现(详解)
开发语言·c++·visualstudio·stl·list
Q_970956392 小时前
java+vue+SpringBoo足球社区管理系统(程序+数据库+报告+部署教程+答辩指导)
java·开发语言·数据库