有人知道如何为QTreeView
项的子组实现/实现具有不同颜色的QTreeView
吗?
类似的东西:
有没有人做过类似的事情,可以给我一个教程的链接或如何,或者示例代码也会很好。目前我完全不知道如何构建它。
我正在使用Qt 5.1.1并将QTreeView
与QFileSystemModel
和QItemSelectionModel
一起使用。
我也想到了:
m_TreeView->setStyleSheet(...)
但这仅为整个treeView
设置样式,或仅为选定的样式设置样式。
有什么建议吗?非常感谢你的帮助!
答案 0 :(得分:4)
有Qt::BackgroundRole可用于返回视图用来绘制索引的QColor'背景
当您使用现有项目模型类(QFileSystemModel)时,最简单的方法是将代理模型置于文件系统模型之上,只进行着色。
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)。