我有一个QTextBrowser()对象:

self.PAddressLink = QTextBrowser()


我需要单击放置在此QTextBrowser上的链接,它应该打开一个新对话框。

self.PAddressLink.setHtml("<html><body><a href=#>+Add Permanent Address</a></body></html>")


无论如何,我可以使用以下代码打开新窗口:

self.PAddressLink.anchorClicked.connect(self.AddPAddress) #self.AddPAddress is the method of displaying a dialog box.


但是我需要知道是否可以将self.AddPAddress放在href中,并避免使用以下额外的语句:

self.PAddressLink.anchorClicked.connect(self.AddPAddress) #self.AddPAddress

最佳答案

您可以(有点)以一种有点怪异的方式来执行此操作。

本质上,您希望将链接视为按钮,并让每个链接调用不同的处理程序。因此,假设所有处理程序都定义在同一个对象上(例如self),则可以执行以下操作:

    self.PAddressLink.setHtml("<a href="AddPAddress">...</a>")
    self.PAddressLink.anchorClicked.connect(self.handleLinkClicked)
    ...

    def handleLinkClicked(self, url):
        if url.host():
            # handle normal urls here if necessary...
        else:
            getattr(self, url.toString())()


或者只是:

        else:
            key = url.toString()
            if key == 'AddPAddress':
                # open dialog...
            elif key == 'SomethingElse':
                # do something else...

08-25 14:30
查看更多