【发布时间】:2017-10-04 07:57:17
【问题描述】:
我有只从 qtextedit 返回选定文本的函数。 我需要获取纯文本,但此函数返回带有一些控制字符的文本。
例如: 函数 textEdit->textCursor().selectedText() 返回:
"select? timestamp,? strftime('%d.%m.%Y', Datetime(timestamp, 'unixepoch', 'localtime')) as date,? strftime('%H:%M:%S', Datetime(timestamp, 'unixepoch', 'localtime')) as time,? author,? from_dispname,? dialog_partner,? body_xml?from? Messages?where? timestamp >= 1501504199? -- timestamp >= 1502345001?order by? timestamp asc"
函数 textEdit->toPlainText() 返回:
"select\n timestamp,\n strftime('%d.%m.%Y', Datetime(timestamp, 'unixepoch', 'localtime')) as date,\n strftime('%H:%M:%S', Datetime(timestamp, 'unixepoch', 'localtime')) as time,\n author,\n from_dispname,\n dialog_partner,\n body_xml\nfrom\n Messages\nwhere\n timestamp >= 1501504199\n -- timestamp >= 1502345001\norder by\n timestamp asc"
在第一个示例中是?(问号)没有输入,我无法替换它们。
我做错了什么?
【问题讨论】:
-
补充:第二个例子效果很好。第一个在 sqlite 中无法使用,因为有问号
-
这很可能是 QTextCursor 的限制。为什么不使用第二个例子? sqlite 中的换行符很好
-
你试过doc.qt.io/qt-5/qtextcursor.html#selection - 也许这会报告正确的字符
-
谢谢菲利克斯。 selection().toPlainText() 解决了问题。我认为问号是 CZ / SK 版本中的一个错误。
-
@Felix 谢谢。然后,
QTextDocumentFragment::toPlainText()可用于获得与QTextDocument::toPlainText()相同的行为,而不是在输出中替换某些字符!