1

我有一个QPlainTextEdit包含一些文本的。自动换行已启用。

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

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

例如:

将小部件添加QPlainTextEdit到窗口并用足够的文本填充它以便自动换行以创建新行。

在此处输入图像描述

将该文本输出到文件:

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

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

结果输出只有 1 行。 在此处输入图像描述

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

4

1 回答 1

1

我提供使用的QTextEdit代替QPlainTextEdit,因为它很容易访问你想要的(它确实有效):

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

QTextEdit现在试试这个逐行获取数据( "textEdit"is as 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);

每当有任何换行符时,此语句都会拆分字符串。

于 2018-08-13T21:56:58.773 回答