2017-12-22 33 views
1

QTableView에 셀의 색을 지정하고 싶습니다.QTableModel의 셀 배경색 변경

그래서 해당 itemData이 해당 QTableModel에서 변경하려고합니다.

이렇게하려면 QAbstractTableModel 클래스의 setItemData 메서드를 사용합니다. 문서에서

:

QAbstractItemModel::setItemData(const QModelIndex & index, const QMap < int, QVariant > & roles)

이 코드의 내 조각 :

color = QtGui.QColor(Qt.red) 
self.model.setItemData(self.model.index(3,3),color,Qt.BackgroundRole) 

나는이 모델의 세 번째 셀을 색상을 것이라고 생각 (수평 및 수직) 빨간색입니다.

그러나 응용 프로그램 답변 :

TypeError: QAbstractItemModel.setItemData(QModelIndex, dict-of-int-QVariant): argument 2 has unexpected type 'QColor' 

나는 QvariantQcolor 형식을 변환하려고하면 :

color = Qt.QVariant(QtGui.QColor(Qt.red)) 
self.model.setItemData(self.model.index(3,3),color,Qt.BackgroundRole) 

답변 :

TypeError: PyQt4.QtCore.QVariant represents a mapped type and cannot be instantiated 

가 어떤 난 정말 할 수 없습니다 알다.

따라서 제 질문은 setItemData 메서드의 두 번째 매개 변수에 넣어야하는 데이터 유형은 무엇입니까? 사전

+0

setItemData하지 않습니다 색상을 두 번째 색인으로 사용합니다. – user1767754

+0

예, 설명서를 잘못 이해했습니다. 색상이 예상 된 줄 알았지 만 Qmap이었습니다. setData를 사용하면 문제가 해결됩니다. 감사. –

답변

1

에 대한

덕분에 당신은 itemData 맵에 하나의 값을 설정 QAbstractItemModel::setData를 사용해야합니다.

self.model.setData(self.model.index(3,3),color,Qt.BackgroundRole) 

당신은 한 번에 여러 값을 설정하려면 QAbstractItemModel::setItemData를 사용하지만, 각각의 부부 역할로 구성되어 QMap 및 해당 값을 구축 할 수 있습니다 :

QMap<int, QVariant> map; 
map.insert(Qt::BackgroundRole, color); 
self.model.setItemData(self.model.index(3,3), map); 
+0

고맙습니다. p-a-o-l-o! 당신 덕분에 마침내 setItemData가 어떻게 작동하는지 알게되었습니다. setData를 사용했으며 오류 메시지가 사라졌습니다. (3,3) 셀은 색상이 변경되지 않았지만 다른 문제입니다. ;-)이 문제가 해결되었습니다. –