我有一个 QTableView,它在表的 2 列中使用组合框委托。如果没有对列进行排序,则从组合框中选择的项目会正确显示在 TableView 中。当列排序时,所选项目不会显示在 TableView 中。
委托中的数据框模型反映了TableView中当前排序的数据。 PythonModel 中的数据帧反映了原始的未排序数据帧。 列排序后如何同步数据帧?
self.model = PandasModel(self.df_referrals)
self.proxyModel = MySortFilterProxyModel()
self.proxyModel.setSourceModel(self.model)
self.table_view.setSortingEnabled(True)
self.table_view.setModel(self.proxyModel)
self.table_view.setItemDelegate(EscapeDelegate(self.model))
self.filter_referrals.textChanged.connect(self.proxyModel.setSearchText)
self.area_delegate = ComboBoxDelegate(self.area_list, self.model)
self.county_delegate = ComboBoxDelegate(self.county_dict, self.model)
self.table_view.setItemDelegateForColumn(4, self.area_delegate)
self.table_view.setItemDelegateForColumn(5, self.county_delegate)
问题出在我的 PandasModel 的 setData 函数中。 我使用的是值而不是 iloc。
self.data_frame.iloc[index.row(),index.column()] = value