treeview,用C++实现:当前选中行字体变成蓝色
时间: 2024-02-16 08:05:32 浏览: 26
您可以通过使用 `QTreeView` 和 `QStyledItemDelegate` 类来实现此功能。以下是一个示例代码:
```cpp
class StyledItemDelegate : public QStyledItemDelegate {
public:
StyledItemDelegate(QObject* parent = nullptr) : QStyledItemDelegate(parent) {}
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override {
// 绘制默认的item
QStyledItemDelegate::paint(painter, option, index);
// 如果当前行被选中,则将字体颜色设置为蓝色
if (option.state & QStyle::State_Selected) {
painter->save();
painter->setPen(QColor(Qt::blue));
painter->drawText(option.rect, Qt::AlignLeft | Qt::AlignVCenter, index.data().toString());
painter->restore();
}
}
};
// 在你的代码中设置 QTreeView
QTreeView* treeView = new QTreeView(this);
treeView->setItemDelegate(new StyledItemDelegate(this));
```
在上面的示例中,我们创建了一个名为 `StyledItemDelegate` 的自定义委托类,并将其设置为 `QTreeView` 的委托。在 `paint` 函数中,我们首先调用 `QStyledItemDelegate::paint` 函数来绘制默认的 item,然后检查当前行是否被选中。如果是选中行,则将字体颜色设置为蓝色。
请注意,这只是一个简单的示例,您可能需要根据您的具体需求进行更多的修改。