当前位置: 首页 > news >正文

QItemDelegate QItemDelegate QItemDelegate

qtreeview点击某一行有颜色显示 c++

在Qt中,要实现QTreeView点击某行有颜色显示,可以通过设置QTreeViewitemDelegate来自定义显示样式。以下是一个简单的例子,演示如何为QTreeView的项设置点击时的背景颜色。

 
 

#include <QApplication>

#include <QTreeView>

#include <QStandardItemModel>

#include <QItemDelegate>

#include <QPainter>

class HighlightDelegate : public QItemDelegate {

public:

HighlightDelegate(QTreeView *view, QColor color)

: QItemDelegate(), treeView(view), highlightColor(color) {}

protected:

void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override {

if (option.state.testFlag(QStyle::State_Selected)) {

QStyleOptionViewItem opt(option);

opt.palette.setColor(QPalette::Highlight, highlightColor);

opt.palette.setColor(QPalette::HighlightedText, Qt::white);

QItemDelegate::paint(painter, opt, index);

} else {

QItemDelegate::paint(painter, option, index);

}

}

private:

QTreeView *treeView;

QColor highlightColor;

};

int main(int argc, char *argv[]) {

QApplication app(argc, argv);

QTreeView treeView;

QStandardItemModel model;

// 填充模型数据

for (int i = 0; i < 5; ++i) {

QStandardItem *item = new QStandardItem("Item " + QString::number(i));

model.appendRow(item);

}

treeView.setModel(&model);

// 设置自定义代理,并指定高亮颜色

HighlightDelegate *delegate = new HighlightDelegate(&treeView, Qt::blue);

treeView.setItemDelegate(delegate);

treeView.show();

return app.exec();

}

在这个例子中,HighlightDelegate类继承自QItemDelegate并重写了paint方法。当项被选中时,它会使用指定的颜色(highlightColor)绘制背景。这样,当你点击QTreeView中的任何一行时,它将会被高亮显示。

你需要将上述代码编译并运行,就能看到效果。记得在你的项目中链接Qt GUI模块。

http://www.lryc.cn/news/412604.html

相关文章:

  • MySQL数据库 外键默认约束和action 基础知识【2】推荐
  • JS正则表达式学习与实践
  • Java数据结构(五)——栈和队列
  • 工具使用:nrm使用以及n模块
  • 匿名管道+进程池+命名管道
  • 【深度学习】【语音TTS】OpenVoice: Versatile Instant Voice Cloning,论文
  • 一六零、云服务器开发机配置zsh
  • [ZJCTF 2019]NiZhuanSiWei1
  • 【网络安全】副业兼职日入12k,网安人不接私活就太可惜了!
  • [STM32]HAL库实现自己的BootLoader-BootLoader与OTA-STM32CUBEMX
  • 鸿萌数据备份服务:中小型企业如何策划及实施云备份方案
  • x264 编码过程中延迟逻辑分析
  • 前端框架 element-plus 发布 2.7.8
  • 2024.8.1(前端服务器的配置以及tomcat环境的配置)
  • 使用 宝塔面板 部署 语料库php网站
  • springboot农产品报价系统-计算机毕业设计源码37300
  • 食源送系统项目的测试
  • JS解构赋值
  • 多多OJ评测系统 前端项目环境初始化 安装Vue脚手架 引入Arco Design组件
  • OceanBase 配置项系统变量实现及应用详解(4):新增系统变量
  • `CAUTION: request is not finished yet!`
  • 科研绘图系列:R语言GWAS曼哈顿图(Manhattan plot)
  • DjangoRF-11-创建testcases子应用--任务模块
  • 服务器数据恢复—SAN环境下LUN被重复映射导致写操作不互斥的数据恢复案例
  • Linux系统安全加固:从防火墙到SELinux策略
  • 排序算法:归并排序,golang实现
  • CSS 的工作原理
  • 买完就后悔?只需几步教你 Apple 怎么申请退款
  • 【保卫战】休闲小游戏 链游
  • 如何构建自己的交易机器人开发环境