2013-11-27 2 views
1

QTreeView 항목의 하위 그룹에 대해 서로 다른 색으로 QTreeView을 구현하거나 실현하는 방법을 아는 사람이 있습니까? 같은
뭔가 :QT-QTreeView QTreeView 항목의 하위 그룹에 다른 색상 사용

1

아무도 그런 일을하고있다 및 튜토리얼이나 방법, 또는 샘플 코드도 좋은 것하는 나에게 링크를 줄 수 있습니까. 현재 저는 이것을 어떻게 구축해야할지 전혀 모릅니다.

Qt 5.1.1에서 QTreeViewQFileSystemModelQItemSelectionModel을 사용하고 있습니다.

나는 또한 생각 :
m_TreeView->setStyleSheet(...)
하지만 이것은 단지 전체 treeView 또는 단지 선택된 사람의 스타일을 설정합니다.

제안 사항? 도와 주셔서 정말로 고맙습니다!

+0

두 번째 인수로'Qt :: BackgroundRole'을 사용하여'QAbstractItemModel :: data()'를 살펴볼 수 있습니다. – vahancho

답변

4

인덱스 배경을 그리기 위해 뷰에서 사용할 QColor를 반환하는 데 사용할 수있는 Qt::BackgroundRole이 있습니다.

기존 항목 모델 클래스 (QFileSystemModel)를 사용하면 색상 모델링을 수행하는 파일 시스템 모델 위에 프록시 모델을 추가하는 것이 가장 쉽습니다. QIdentityProxyModel를 사용

:

class ColorizeProxyModel : public QIdentityProxyModel { 
    Q_OBJECT 
public: 
    explicit ColorizeProxyModel(QObject *parent = 0) : QIdentityProxyModel(parent) {} 

    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const { 
     if (role != Qt::BackgroundRole) 
      return QIdentityProxyModel::data(index, role); 

     ... find out color for index 
     return color; 
    } 
}; 

는이 기능을 사용하려면

QFileSystemModel *fsModel = new QFileSystemModel(this); 
ColorizeProxyModel *colorProxy = new ColorizeProxyModel(this); 
colorProxy->setSourceModel(fsModel); 
treeView->setModel(colorProxy); 

당신이 (등 특별한 모양과 같은) 더 화려한 것을, 필요한 경우, 사용자 정의와 자신의 항목 대리자를 필요 했어 그림 (QStyledItemDelegate 참조).

+0

그게 내가 무엇을 찾고 있었는지. 고맙습니다 ! – user1911091

+0

왜 명시 적으로 명시 적으로 작성해야합니까? – user1767754

+0

@ user1767754 : 다음은 명시적인 내용입니다. http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean –

관련 문제