QTextBrowser scrollToAnchor 调用未正确滚动

问题描述

我无法让 QTextBrowser.scrollToAnchor 正确滚动。 on_anchorClicked 信号正在触发,但我很难确定之后出了什么问题。

我已经通过在 ReText 中预览来仔细检查我的 Markdown 文件锚点是否正确标记(只要我不选中 WebKit 预览框,锚点就可以工作)。 (我也知道 HTML 命名要求 as mentioned in this question)。

我在我的实现和他们正在做的事情之间看到的主要区别是我使用 QTextbrowser.setMarkdown 来填充我的降价预览小部件。有谁知道这是否与 QTextbrowser 设置锚点的方式混淆?

示例代码如下:

import pyside2 as ps2

class App(ps2.QtWidgets.QMainWindow):
    def __init__(self,parents=None):
        self.ui.textbrowser.anchorClicked.connect(self.on_anchorClicked)

    def read_file(self,file_path):
        file_handle = ps2.QtCore.QFile(file_path.absoluteFilePath())
        if not file_handle.open(ps2.QtCore.QFile.ReadOnly | ps2.QtCore.QFile.Text):
            return False

        stream = ps2.QtCore.QTextStream(file_handle)
        self.ui.textbrowser.setMarkdown(stream.readAll())
    
    def on_anchorClicked(self,link):
        url = link.url()
        if url.startswith("#"):
            print("Attempting to scroll to anchor {}".format(url[1:]))
            self.ui.textbrowser.scrollToAnchor(url[1:])

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)