QT - QTreeView QTreeView आइटम के उपसमूहों के लिए विभिन्न रंगों के साथ

क्या कोई जानता है कि QTreeView आइटम्स के उपसमूहों के लिए अलग-अलग रंगों के साथ QTreeView को कार्यान्वित/कैसे कार्यान्वित किया जाए? कुछ इस तरह:

1

क्या किसी ने ऐसा कुछ किया है और मुझे एक ट्यूटोरियल या कैसे करें, या नमूना कोड भी एक लिंक दे सकता है। वर्तमान में मुझे बिल्कुल यह नहीं पता कि इसे कैसे बनाया जाए।

मैं क्यूटी 5.1.1 के साथ काम कर रहा हूं और QFreeView QFileSystemModel और QItemSelectionModel के साथ QTreeView का उपयोग कर रहा हूं।

I also thought of :
m_TreeView->setStyleSheet(...)
but this only sets the style for the whole treeView or only for the selected ones.

कोई सुझाव? आपकी सहायता के लिए धन्यवाद!

1
आप QAbstractItemModel :: डेटा() को Qt :: BackgroundRole के साथ दूसरे तर्क के रूप में देखने का प्रयास कर सकते हैं।
जोड़ा लेखक vahancho, स्रोत

1 उत्तर

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 )।

4
जोड़ा
आपको "स्पष्ट" को शानदार तरीके से क्यों लिखना है?
जोड़ा लेखक user1767754, स्रोत
जो कुछ मैं ढूंढ रहा था वह था। धन्यवाद !
जोड़ा लेखक user1911091, स्रोत
@ user1767754: यहां एक स्पष्टीकरण है जो स्पष्ट है: stackoverflow.com/questions/121162/…
जोड़ा लेखक Frank Osterfeld, स्रोत