gpt4 book ai didi

c++ - QT - QTreeView 具有不同颜色的 QTreeView 项目子组

转载 作者:行者123 更新时间:2023-11-30 01:55:54 24 4
gpt4 key购买 nike

有人知道如何为 QTreeView 项目的子组实现/实现具有不同颜色的 QTreeView 吗?
像这样的东西:

1

有没有人做过类似的事情,可以给我一个教程或操作方法的链接,或者示例代码也不错。目前我完全不知道如何构建它。

我正在使用 Qt 5.1.1 并将 QTreeViewQFileSystemModelQItemSelectionModel 一起使用。

我也想到了:
m_TreeView->setStyleSheet(...)
但这只会为整个 treeView 或只为选定的设置样式。

有什么建议吗?非常感谢您的帮助!

最佳答案

Qt::BackgroundRole可用于返回 View 使用的 QColor 来绘制索引的背景。

当您使用现有的项模型类 (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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com