因此,我正在编写应用程序并使用storage
和QTableView
来显示我的数据。在每一行中,复选框放在第一列中,当选中或取消选中时,我希望将{pyqtsignal QAbstractTableModel
发送到CheckBoxValue
。但似乎没有调用MyTable
中的连接函数self.checkboxchecked
。虽然我曾经多次使用pyqtSignal而没有任何问题,但是我已经被困在这里并且无法解决它。
感谢大家花时间照顾我的问题!
MyTable
答案 0 :(得分:1)
在你的情况下,你已经在MyTable构造函数中创建了一个table_model,并且使用该对象建立了连接,但是稍后在update_model方法中你已经创建了一个新模型,因此之前的模型已被删除,并且它的连接也是如此
def update_model(self):
self.table_model = MyTableModel(self, self.dataList, self.header)
self.table_view.setModel(self.table_model)
self.table_model.CheckBoxValue.connect(self.checkboxchecked)
self.table_view.update()
虽然我更喜欢更新模型,而不是为它创建新模型,但我会创建一个更新数据的方法:
class MyTableModel(QAbstractTableModel):
"""
keep the method names
they are an integral part of the model
"""
CheckBoxValue = pyqtSignal(bool)
def __init__(self, parent, mylist, header, *args):
QAbstractTableModel.__init__(self, parent, *args)
self.mylist = mylist
self.header = header
def update_model(self, mylist, header):
self.beginResetModel()
self.mylist = mylist
self.header = header
self.endResetModel()
[...]
并在表的update_model中:
class MyTable(QWidget):
[...]
def update_model(self):
self.table_model.update_model(self.dataList, self.header)