을 추가하는 것은 그래서 여기 이야기입니다. 일부 항목은 모델의 숨겨진 열 값을 기준으로 굵게 표시되어야하므로 내 자신의 사용자 지정 대리자를 만들기로 결정했습니다. 나는 PyQT 4.5.4를 사용하고 있으므로 QStyledItemDelegate에서 상속하는 것은 문서에 따라 갈 수있는 방법이다. 나는 그것을 작동 시키지만 거기에 몇 가지 문제가있다.사용자 정의 QStyledItemDelegate는 :</p> <p>나는 그것을 채우기 위해 QSqlQueryModel를 사용하는 QListview 있습니다 굵은 항목
class TypeSoortDelegate(QStyledItemDelegate):
def paint(self, painter, option, index):
model = index.model()
record = model.record(index.row())
value= record.value(2).toPyObject()
if value:
painter.save()
# change the back- and foreground colors
# if the item is selected
if option.state & QStyle.State_Selected:
painter.setPen(QPen(Qt.NoPen))
painter.setBrush(QApplication.palette().highlight())
painter.drawRect(option.rect)
painter.restore()
painter.save()
font = painter.font
pen = painter.pen()
pen.setColor(QApplication.palette().color(QPalette.HighlightedText))
painter.setPen(pen)
else:
painter.setPen(QPen(Qt.black))
# set text bold
font = painter.font()
font.setWeight(QFont.Bold)
painter.setFont(font)
text = record.value(1).toPyObject()
painter.drawText(option.rect, Qt.AlignLeft, text)
painter.restore()
else:
QStyledItemDelegate.paint(self, painter, option, index)
문제점 내가 지금 직면하고 있습니다 :
- 일반 (굵게 표시되지 않은) 항목입니다 약간 들여 쓰기 (몇 픽셀)
여기 내 솔루션입니다. 이것은 아마도 일부 기본값 인 입니다. 에 내 항목을 들여 쓸 수도 있지만 다른 플랫폼에서 은 어떻게됩니까?
- 일반적으로 항목을 선택할 때 주위에 점선이있는 작은 테두리가 있습니다 (기본 Windows 것인가?). 여기서도 그릴 수는 있지만 가능한 한 원주민이되고 싶습니다.
이제 질문 :
는 일부 조건이 충족되는 글꼴의 무게를 변경하고 나머지는 그대로 모든 잎 사용자 정의 대리자를 만들 수있는 또 다른 방법이 있습니까?
if value:
font = painter.font()
font.setWeight(QFont.Bold)
painter.setFont(font)
QStyledItemDelegate.paint(self, painter, option, index)
을하지만 전혀 모습에 영향을 미칠 것 같지 않습니다
나는 또한 시도했다. 오류가없고 기본 동작 만 있고 굵게 표시되지는 않습니다.
모든 제안을 환영합니다!