我一直在根据Peter Goldsborough的这个例子组装一个文本编辑器。文本框由 html 填充,但显示为富文本。
我已经做到了,这样用户就可以点击文本框中已经存在的超链接。但是,我不知道从哪里开始添加功能,以便用户可以在编辑时添加自己的、新的可点击超链接。非常感谢知道的人的指点!
(我特别想避免这里采用的方法——这个家伙似乎正在使用一个解析器,它扫描整个文档以寻找类似链接的结构并添加 html 标签。这似乎比它需要的更难,更容易出错是,我想知道是否有一种方法可以用 html 标签包围突出显示的文本。)
我尝试了@kuba-ober 的以下建议,但由于我正在使用 Qt for Python 的 PyQt4 绑定,因此我对其进行了修改:
def setHyperlinkOnSelection(self, url):
cursor = self.text.textCursor()
if not cursor.hasSelection():
return False
format = QtGui.QTextCharFormat()
format.setAnchor(True)
format.setAnchorHref(url)
cursor.mergeBlockCharFormat(format)
return True
不幸的是,这不起作用,但我用它来调整 Goldsborough示例中的一些格式化方法,以产生以下结果:
def setHyperlinkOnSelection(self, url):
# Grab the text's format
fmt = self.text.currentCharFormat()
# Set the format to an anchor with the specified url
fmt.setAnchor(True)
fmt.setAnchorHref(url)
# And set the next char format
self.text.setCurrentCharFormat(fmt)
这会产生一个链接(蓝色带下划线的文本,当转换为 html 时,使用“a href”标签正确格式化),但它不可点击(用鼠标悬停在文本上不会变成指向手,并且点击什么都不做)...