目录
输入类控件QTextEdit
例子:获取多行输入框的内容
例子:验证输入框的各种信号
输入类控件QTextEdit
QTextEdit表示多行输入框,也是一个富文本&markdown编辑器。
并且能在内容超出编辑框范围时自动提供滚动条
在Qt中,有俩种表示多行输入框
- QTextEdit:不仅能表示纯文本,还可以表示html和markdown
- QPlainTextEdit:只能表示纯文本(Plain Text)
核心属性
属性 | 说明 |
---|---|
markdown | 输⼊框内持有的内容. ⽀持 markdown 格式. 能够⾃动的对markdown ⽂本进⾏渲染成 html |
html | 输⼊框内持有的内容. 可以⽀持⼤部分 html 标签. 包括 img 和 table 等. |
placeHolderText | 输⼊框为空时提⽰的内容 |
readOnly | 是否是只读的 |
undoRedoEnable | 是否开启 undo / redo 功能.(撤销) 按下 ctrl + z 触发 undo 按下 ctrl + y 触发 redo |
autoFormating | 开启⾃动格式化 |
tabstopWidth | 按下缩进占多少空间 |
overwriteMode | 是否开启覆盖写模式 |
acceptRichText | 是否接收富⽂本内容 |
verticalScrollBarPolicy | 垂直⽅向滚动条的出现策略
|
horizontalScrollBarPolicy | ⽔平⽅向滚动条的出现策略
|
核心信号
信号 | 说明 |
---|---|
textChanged() | ⽂本内容改变时触发 |
selectionChanged() | 选中范围改变时触发 |
cursorPositionChanged() | 光标移动时触发 |
undoAvailable(bool) | 可以进⾏ undo 操作时触发 |
redoAvailable(bool) | 可以进⾏ redo 操作时触发 |
copyAvaiable(bool) | ⽂本被选中/取消选中时触发 |
例子:获取多行输入框的内容
(1)创建一个多行输入框和一个label
(2)初始化文本为空,给多行输入框添加slot函数,处理textChanged信号。
textChagned提供了toPlainText、toMarkdown和toHtml获取文本内部
(3)输入到label中
【注意】这种情况下,输入的“一段文本”不是敲到输入框里面,而是输入的输入法提供的窗口里。当按下空格或者回车的时候,输入法的内容才会进入到输入框内,所谓的输入法,其实就是一个单独的窗口。
代码展示:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//初始化 label 为空ui->label->setText(" ");
}Widget::~Widget()
{delete ui;
}void Widget::on_textEdit_textChanged()
{//获取此时文本中的内容const QString& text = ui->textEdit->toPlainText();//将文本中的内容放到label中ui->label->setText(text);
}
例子:验证输入框的各种信号
(1)创建一个文本框
(2)使用qDebug()的方式进行测试型号
按下ctrl + z后撤销