在QTextBrowser对象上使用anchorClicked.connect()提供了锚点的URL……但这是我想要的...
我想跳到锚点,而不是单击它。
我目前使用eventFilter检测锚点获得焦点,该eventFilter检测“ focusIn”事件。
我现在需要的是在该锚点上“检索URL”的方法。
eventFilter()提供信号源,如下所示:
“位于0x000001D42BA48558的PyQt5.QtWidgets.QTextBrowser对象”
尝试使用以下方法获取此内存地址的内容:
content = ctypes.cast(int(hex(source.group(2))), ctypes.py_object).value
但是使用提供的十六进制ID地址存在问题。
此外,此内存地址甚至可能没有URL…文档未说明。
#create a qtextbrowser widget
self.doco = QTextBrowser(self.mainpane)
#listen for mouse-click on anchor signal OR
self.doco.anchorClicked.connect(self.contractAnchorClicked) #this works
#listen for tab to anchor signal
self.focusInFilter = FocusInFilter(self.doco) #works but no URL
self.doco.installEventFilter(self.focusInFilter)
self.focusInFilter.focusIn.connect(self.detectFocusOnAnchor)
#run this method if mouse-click detected
def anchorClicked(self,url):
print("in anchorClicked: url=",url)
#run this method if tab to anchor detected
def focusOnAnchor(self):
print("in focusOnAnchor")
#the event filter
class FocusInFilter(QObject):
focusIn = pyqtSignal()
def eventFilter(self, source, event):
if event.type() == QEvent.FocusIn:
print("--eventFilter() focus detected " + str(source))
self.focusIn.emit()
return True
return False
希望那里的人知道如何检索锚的URL。
如果我用鼠标单击锚点,则会收到以下控制台消息:
“ in anchorClicked:url = PyQt5.QtCore.QUrl'http://www.____test____.com')”按预期。
如果我选择锚点,则会收到以下控制台消息:
“在focusOnAnchor中”。
我只需要以某种方式将URL添加到此结果中。
谢谢你们
Red Rover