4

我有一个带有一些按钮和绘图的主窗口。我使用 Qt Designer 添加了一个文件菜单。现在,如果我运行我的应用程序,一切都很好,我可以看到一个典型的菜单栏。问题是,我想点击菜单栏并执行一个操作——我想用默认浏览器打开一个互联网网页。有人能帮我吗?

这是 Qt Designer 使用 pyuic4 生成的代码(我只显示文件菜单的代码):

self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1445, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
self.menuFile = QtGui.QMenu(self.menubar)
self.menuFile.setObjectName(_fromUtf8("menuFile"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.actionFsa_format = QtGui.QAction(MainWindow)
self.actionFsa_format.setObjectName(_fromUtf8("actionFsa_format"))
self.menuFile.addAction(self.actionFsa_format)
self.menubar.addAction(self.menuFile.menuAction())

如您所见,我有一个文件菜单和一个带有 actionFsa_format 操作的工具按钮。我想单击它并打开一个外部 url。

4

1 回答 1

8

您需要将动作的触发信号连接到处理程序。

因此,在__init__您的主窗口中,执行以下操作:

self.ui.actionFsa_format.triggered.connect(self.openUrl)

你的openUrl方法可能是这样的:

def openUrl(self):
    url = QtCore.QUrl('http://some.domain.com/path')
    if not QtGui.QDesktopServices.openUrl(url):
        QtGui.QMessageBox.warning(self, 'Open Url', 'Could not open url')
于 2014-03-26T20:04:21.923 回答