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

相关推荐
吴_知遇31 分钟前
【华为OD机试真题】428、连续字母长度 | 机试真题+思路参考+代码解析(E卷)(C++)
开发语言·c++·华为od
LaoWaiHang1 小时前
MFC案例:使用键盘按键放大、缩小窗口图像的实验
c++·mfc
basketball6161 小时前
Python torchvision.transforms 下常用图像处理方法
开发语言·图像处理·python
到底怎么取名字不会重复1 小时前
Day10——LeetCode15&560
c++·算法·leetcode·哈希算法·散列表
宁酱醇1 小时前
各种各样的bug合集
开发语言·笔记·python·gitlab·bug
啊吧怪不啊吧1 小时前
Linux常见指令介绍下(入门级)
linux·开发语言·centos
谷晓光1 小时前
Python 中 `r` 前缀:字符串处理的“防转义利器”
开发语言·python
Tiger Z1 小时前
R 语言科研绘图第 41 期 --- 桑基图-基础
开发语言·r语言·贴图
chuxinweihui2 小时前
数据结构——二叉树,堆
c语言·开发语言·数据结构·学习·算法·链表
小刘同学++2 小时前
Qt 使用 MySQL 数据库的基本方法
数据库·qt·mysql