【发布时间】:2011-04-24 03:50:31
【问题描述】:
我正在用 PyQt4 编写一个数据库浏览器应用程序,因为我是 Qt 新手,所以我遇到了一些问题。我已经用 python 编写了大多数功能,但我知道我正在尝试使用 PyQt4 GUI 来实现它们。
首先,我的应用程序现在看起来像这样:
Browser
在这些目录中,我有想要解析的 xml 文件。
我写过这样的东西:
QtCore.QObject.connect(self.ui.treeView, QtCore.SIGNAL("clicked(QModelIndex)"), self.ui.plainTextEdit, QtCore.SLOT("paste()"))
它有效。但是当我尝试做这样的事情时:QtCore.QObject.connect(self.ui.treeView, QtCore.SIGNAL("clicked(QModelIndex)"), self.ui.plainTextEdit, QtCore.SLOT("insertPlainText('test')"))
它失败。阅读手册后,我知道 SIGNAL 和 SLOT 必须采用相同的参数。所以我应该写一些信号来执行一个 SLOT,它是一个带有 QModelIndex 参数的函数,它找到点击的文件,创建 xmldocument 对象,然后打印出它的字典。
我的问题是:
- 如何创建可作为 SLOT 调用的函数?
因为在 ui 文件中我创建了一个函数:
def test(self):
print "Debug"
当我试图把它叫出来时QtCore.QObject.connect(self.ui.treeView, QtCore.SIGNAL("clicked(QModelIndex)"), self.ui.test())
我收到了这个错误:
TypeError: arguments did not match any overloaded call:
QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 2 has unexpected type 'str'
还有一个问题:
- 我应该如何从 QModelIndex 获取点击文件的路径?
【问题讨论】: