在我的自定义模型设置中,布尔值会自动创建带有真/假选项的组合框/下拉菜单,而字符串值会创建常规的行编辑类型的编辑器
我想知道为什么会这样?我是否可以从代理访问该编辑器以连接其信号(即currentIndexChanged)
Screnshot
下面是要复制的简单代码片段:
from PySide2 import QtCore, QtGui, QtWidgets
import sys
class BoolModel(QtCore.QAbstractTableModel):
def __init__(self, parent=None):
super(BoolModel, self).__init__(parent)
self.bool_value = True
def flags(self, index):
return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled
def rowCount(self, parent=QtCore.QModelIndex()):
return 5
def columnCount(self, parent=QtCore.QModelIndex()):
return 1
def data(self, index, role=QtCore.Qt.DisplayRole):
if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
return self.bool_value
def setData(self, index, value, role=QtCore.Qt.DisplayRole):
if role == QtCore.Qt.EditRole:
self.bool_value = value
return True
return False
app = QtWidgets.QApplication([])
model = BoolModel()
table = QtWidgets.QTableView()
table.show()
table.setModel(model)
sys.exit(app.exec_())
^{} 是一个类,允许为每种类型的数据设置编辑器类型,如the docs所示:
正如您在布尔运算中所看到的,然后使用QComboBox作为编辑器,在QString(或python中的string)中使用QLineEdit
您还可以使用委托访问该编辑器:
相关问题 更多 >
编程相关推荐