多行輸入框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
類型:
//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
對象,通過這個對象可以獲取到當前光標位置和選中的內容。
#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()
可以獲取選中的內容。