Я собирал текстовый редактор на основе этот пример Питера Голдсборо. Текстовое поле заполняется из HTML, но отображается как форматированный текст.
Я сделал так, чтобы пользователи могли нажимать на гиперссылки, уже находящиеся в текстовом поле. Однако я понятия не имею, с чего начать добавление функциональности, чтобы пользователи могли добавлять свои собственные новые интерактивные гиперссылки при редактировании. Буду очень признателен за подсказки от знающих!
(Я специально пытаюсь избежать подхода, используемого здесь - этот парень, похоже, использует парсер который сканирует весь документ на наличие структуры, подобной ссылке, и добавляет теги html. Это кажется намного сложнее и более подвержено ошибкам, чем должно быть, и мне интересно, есть ли способ просто окружить выделенный текст тегами html.)
Я попробовал приведенное ниже предложение @kuba-ober, хотя, поскольку я работаю с привязкой PyQt4 к Qt для Python, я изменил его:
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
К сожалению, это не сработало, но я использовал это, чтобы адаптировать некоторые методы форматирования в примере чтобы получить следующее:
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»), но он не активен (наведение курсора мыши на текст не меняется на указывающую руку, и щелчок ничего не делает)...