QPlainTextEdit :: toPlainText(),但包含自动换行中的换行符

时间:2018-08-13 20:43:41

标签: c++ qt qplaintextedit

我有一个QPlainTextEdit,其中包含一些文本。启用自动换行。

当我使用toPlainText()检索文本时,结果字符串不包含从自动换行创建的换行符。这是因为这些换行符不是由用户直接输入的。

我想保留自动换行创建的那些换行符。如何做到这一点?

例如:

QPlainTextEdit小部件添加到窗口中,并在其中填充足够的文字以进行自动换行以创建新行。

enter image description here

将该文本输出到文件:

QString myText = ui->plainTextEdit->toPlainText();

QFile outputFile("test.txt");
outputFile.open(QIODevice::WriteOnly);
outputFile.write(myText.toUtf8());
outputFile.close();

结果输出仅为1行。 enter image description here

如何保留自动换行模拟的换行符?

1 个答案:

答案 0 :(得分:0)

我使用QTextEdit而不是QPlainTextEdit来报价,因为它很容易访问您想要的内容(它确实可以工作):

  • 在小部件上拖动QTextEdit控件
  • 选择它,然后将lineWrapMode选项更改为FixedColumnWidth(在属性部分)
  • 然后,将lineWrapColumnOrWidth选项设置为(包裹时,您的任意行长,例如10)
  • 现在填充QTextEdit,这样您就可以看到期望的结果!

现在尝试逐行获取QTextEdit数据("textEdit"QTextEdit):

// QTextEdit content
QString strLines = ui->textEdit->toPlainText();

// line count of QTextEdit
int lineCount = strLines.length() / ui->textEdit->lineWrapColumnOrWidth();
int lineLength = ui->textEdit->lineWrapColumnOrWidth();

for(int i = 0; i < lineCount; i++) {

    QMessageBox::information(this, "", strLines.mid(i * lineLength, lineLength));
}

对于拆分实数\n,您可以尝试:

QString.split(QRegExp("[\r\n]"),QString::SkipEmptyParts);

只要任何 newline 字符,此语句就会拆分字符串。