有人知道如何为QTreeView
项目的子组实现/实现不同颜色的QTreeView
吗?
就像是:
是否有人做过类似的事情并且可以给我链接到教程或如何做的链接,或者示例代码也不错。目前,我完全不知道如何构建它。
我正在使用Qt 5.1.1并将QTreeView
与QFileSystemModel
和QItemSelectionModel
一起使用。
我还想到了:m_TreeView->setStyleSheet(...)
但这只会为整个treeView
或仅为选定的ojit_code设置样式。
有什么建议么?非常感谢你的帮助!
最佳答案
有一个Qt::BackgroundRole,可以用来返回一个QColor,以供 View 绘制索引的背景。
当您使用现有的项目模型类(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);
如果您需要更多精美的东西(例如特殊形状等),则需要自己的带有自定义绘画的项目委托(delegate)(请参见QStyledItemDelegate)。
关于c++ - QT-QTreeView项目的子组具有不同颜色的QTreeView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20247065/