0

我有一个 QTextBrowser,我在其中输入了该示例文本:

Column1    Column2
1 2 3 4    www.google.com

列之间有制表符,数字之间有空格。plainText=QTextBrowser.toPlainText() 给出:

Column1    Column2
1 2 3 4    www.google.com

现在,我想让链接可点击。通过这个,我将文本设置为 html。我写了一些字符串操作

WORDS = re.split("(\W+)",plainText) 

这给了

['Column1', '\t', 'Column2', '\n', '1', ' ', '2', ' ', '3', ' ', '4', '\t', 'www', '.', 'google', '.', 'com', ' ', '']

并将“www”替换为 html 格式的超链接

<a href=http://www.google.com>www.google.com</a>

然后,我删除了 WORDS 中的项目:“.”、“test”、“.”、“com”。

['Column1', '\t', 'Column2', '\n', '1', ' ', '2', ' ', '3', ' ', '4', '\t', '<a href=http://www.google.com>www.google.com</a>', ' ', '']

然后我再次将所有 WORDS 部分重建为一个字符串,将换行符 \n 替换为

<br/>.

现在,当我将字符串设置为 QTextBrowser 时,链接会正确显示并且可以点击。问题是:输入的文本,因为它现在是 html,忽略/删除所有空格(如果多个)和制表符!输出看起来像(链接现在是蓝色并带下划线)

Column1 Column2
1 2 3 4 www.google.com 

如何在不破坏格式的情况下创建超链接?

也许我坐错火车了??

4

1 回答 1

0

I think I got it. In case it might be useful, here is my solution: A html file does respect your format, if you put the style in the css to "pre", and not like QTextBrowser to "pre-wrap". Moreover, in the end the typed links can directly be replaced by the created hyperlinks.

The html file that is generated and setted to the QTextBrowser then partwise looks like:

<style type="text/css">#editor { white-space: pre; }</style>

<p id='editor', style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="editor"></a>Column1        Column2</p>
于 2013-07-14T22:02:43.373 回答