1 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
解釋:
發(fā)生的事情是,PySide2將整數(shù)從python轉(zhuǎn)換為L(zhǎng)ongLong(QVariant::LongLong=4),C++默認(rèn)情況下,默認(rèn)QItemEditorFactory不會(huì)處理,因此使用了(在PyQt中轉(zhuǎn)換為QMetaType::Int=2)。QLineEdit
溶液:
一種可能的解決方案是創(chuàng)建一個(gè)返回相應(yīng)小部件的自定義 QItemEditorFactory:
from PySide2 import QtCore, QtGui, QtWidgets
class ItemEditorFactory(QtWidgets.QItemEditorFactory):
def createEditor(self, userType, parent):
if userType == 4:
return QtWidgets.QSpinBox(parent, minimum=-2147483648, maximum=2147483647)
return super().createEditor(userType, parent)
if __name__ == "__main__":
app = QtWidgets.QApplication([])
factory = ItemEditorFactory()
QtWidgets.QItemEditorFactory.setDefaultFactory(factory)
w = QtWidgets.QTableView()
resourcesModel = QtGui.QStandardItemModel(2, 2)
w.setModel(resourcesModel)
item = QtGui.QStandardItem()
item.setData(123123, QtCore.Qt.EditRole)
resourcesModel.setItem(1, 1, item)
w.resize(640, 480)
w.show()
app.exec_()
添加回答
舉報(bào)