Python QTableView单击信号从未发出?
我开始越来越困惑了。我无法让QTableView像我所希望的那样发出信号。我把我的案子简化成了一件不那么混乱的事情,即使在这种情况下,当我点击的时候,我也无法得到任何被触发的信号 例如,在该代码中,插槽“onClickedRow”在启动应用程序时会被调用一次(我不知道为什么),但我可以在任何地方单击任意多个插槽,并且该插槽永远不会被调用:Python QTableView单击信号从未发出?,python,python-3.x,qtableview,pyside2,Python,Python 3.x,Qtableview,Pyside2,我开始越来越困惑了。我无法让QTableView像我所希望的那样发出信号。我把我的案子简化成了一件不那么混乱的事情,即使在这种情况下,当我点击的时候,我也无法得到任何被触发的信号 例如,在该代码中,插槽“onClickedRow”在启动应用程序时会被调用一次(我不知道为什么),但我可以在任何地方单击任意多个插槽,并且该插槽永远不会被调用: import sys from PySide2 import QtWidgets, QtCore, QtGui class Message(QtCore.
import sys
from PySide2 import QtWidgets, QtCore, QtGui
class Message(QtCore.QAbstractItemModel):
def __init__(self):
super().__init__()
self.messageList = []
def addMessage(self, typeName, data):
self.messageList.append({"type": typeName,
"data": data})
def data(self, index, role):
if not index.isValid():
return None
if role != QtCore.Qt.DisplayRole:
return None
item = self.messageList[index.row()]
if index.column() == 0:
return str(item["type"])
else:
return str(item["data"])
def headerData(self, section, orientation, role):
if orientation == QtCore.Qt.Horizontal:
if role == QtCore.Qt.DisplayRole:
if section == 0:
return "type"
else:
return "data"
return None
def parent(self, index):
if not index.isValid():
return QtCore.QModelIndex()
return QtCore.QModelIndex()
def index(self, row, column, parent):
if not self.hasIndex(row, column, parent):
return QtCore.QModelIndex()
else:
return self.createIndex(row, column)
def flags(self, index):
if not index.isValid():
return QtCore.Qt.NoItemFlags
return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable
def columnCount(self, parent):
return 2
def rowCount(self, parent):
return len(self.messageList)
class FormMessageJournal(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.layout = QtWidgets.QVBoxLayout()
self.messageTable = QtWidgets.QTableView(self)
self.messageTable.clicked.connect(self.onClickedRow())
self.messageList = Message()
self.messageList.addMessage("Send", "Hello")
self.messageList.addMessage("Send", "Hello")
self.messageList.addMessage("Send", "Hello")
self.messageList.addMessage("Send", "Hello")
self.messageTable.setModel(self.messageList)
self.layout.addWidget(self.messageTable)
self.setLayout(self.layout)
def onClickedRow(self, index=None):
print("Click !")
if __name__ == "__main__":
app = QtWidgets.QApplication([])
widget = FormMessageJournal()
widget.show()
sys.exit(app.exec_())
我是唯一一个有这种问题的人吗
self.messageTable.clicked.connect(self.onClickedRow())
self.messageTable.clicked.connect(self.onClickedRow)
改为: