QPlainTextEdit是一個多行文本編輯器,用於顯示和編輯多行簡單文本。
一些常用的函數有:
appendPlainText(const QString) |
向 PlainTextEdit 組件添加一行字符串 |
QString toPlainText() |
將全部文字內容輸出為一個字符串 |
Int blockCount() |
獲得文本塊個數(一個文本塊是一個段落,一個段落以回車符結束 |
QTextBlock fmdBlockByNumber(int blockNumber) |
讀取某一個文本塊,序號從 0 開始,至 blockCount()-1 結束 |
逐行讀取文本:
QPlainTextEdit 的文字內容以 QTextDocument 類型存儲。
QTextDocument 是內存中的文本對象,以文本塊的方式存儲,一個文本塊就是一個段落,每個段落以回車符結束。QTextDocument 提供一些函數實現對文本內容的存取:
- int blockCount():獲得文本塊個數。
- QTextBlock fmdBlockByNumber(int blockNumber):讀取某一個文本塊,序號從 0 開始,至 blockCount()-1 結束。
一個 document 有多個 TextBlock,從 document 中讀取出的一個文本塊類型為 QTextBlock,通過 QTextBlock::text()
函數可以獲取其純文本文字。
代碼:
void Widget::on_btnToComboBox_clicked() { //plainTextEdit的內容逐行添加為comboBox的項 QTextDocument* doc=ui->plainTextEdit->document () ; //文本對象 int cnt=doc->blockCount () ;//回車符是一個 block for (int i=0; i<cnt;i++) { QTextBlock textLine=doc->findBlockByNumber (i) ; // 文本中的一段 QString str=textLine.text(); } }
實時顯示使用plainTextEdit的信號cursorPositionChanged().
有自帶快捷鍵菜單,使用信號customContextMenuRequested(),創建快捷菜單的槽函數代碼如下:
QMenu* menu=ui->plainTextEdit->createStandardContextMenu();
menu->exec(pos);