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

自定义代理编辑控件类TSpinBoxDelegate

自定义代理编辑控件类TSpinBoxBoxDelegate
自定义代理编辑控件类TSpinBoxBoxDelegate的定义过程
重写自定义代理编辑组件类的四个方法:  创建编辑组件、模型赋值给代理编辑组件、代理编辑组件数据到模型、更新位置

.h

#ifndef TSPINBOXDELEGATE_H
#define TSPINBOXDELEGATE_H#include <QObject>
#include <QStyledItemDelegate>class TSpinBoxDelegate : public QStyledItemDelegate
{Q_OBJECT
public:explicit TSpinBoxDelegate(QObject *parent = nullptr);QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;void setEditorData(QWidget *editor, const QModelIndex &index) const;void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const;
};#endif // TSPINBOXDELEGATE_H

.cpp

#include "tspinboxdelegate.h"
#include <QSpinBox>TSpinBoxDelegate::TSpinBoxDelegate(QObject *parent): QStyledItemDelegate{parent}
{
}
QWidget* TSpinBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{Q_UNUSED(option);Q_UNUSED(index);QSpinBox *spinBox = new QSpinBox(parent);spinBox->setFrame(false);spinBox->setMinimum(0);spinBox->setMaximum(50000);return editor;
}void TSpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{QSpinBox *spinBox = static_cast<QSpinBox *>editor;int value = spinBox->value();model->setData(index,value,Qt::EditRole);
}void TSpinBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{QSpinBox *spinBox = static_cast<QSpinBox *>editor;int value = index.model()->data(index,Qt::EditRole).toInt();spinBox->setValue(value);
}void TSpinBoxDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
{Q_UNUSED(index);editor->setGeometry(option.rect);
}

TSpinBoxBoxDelegate自定义编辑控件总结

 1. 统一继承自 QStyledItemDelegate
2. 根据TSpinBoxBox的特性,赋值 为int类型
3. 将QWidget 转换为 TSpinBoxBox ,使用static_cast

相关文章:

  • 【区分vue2和vue3下的element UI PageHeader 页头组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • Linux之文本三剑客
  • 基于单片机技术的按键扫描电路分析
  • 缠中说禅李彪08年“假死”具体原因探讨
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • centos7安装mqtt服务端
  • vue中数组出现__ob__: Observer属性,导致不能正确使用问题解决
  • 一个人的开发团队:前后端与调动AI
  • 怎样才能更好地保护个人账号的安全
  • Linux库概念及相关编程(动态库-静态库)
  • Kafka-服务端-网络层-源码流程
  • Flink ProcessFunction不同流异同及应用场景
  • SeekBar设置自定义thumb图片的时候显示不全问题
  • 马斯克宣布xAI将在8月份推出Grok-2大模型 预计年底推出Grok-3
  • Spring Boot 创建定时任务
  • 【笔记】你不知道的JS读书笔记——Promise
  • Linux各目录及每个目录的详细介绍
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Spring声明式事务管理之一:五大属性分析
  • vue的全局变量和全局拦截请求器
  • 大快搜索数据爬虫技术实例安装教学篇
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 关于字符编码你应该知道的事情
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 详解NodeJs流之一
  • 一天一个设计模式之JS实现——适配器模式
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 2017年360最后一道编程题
  • 回归生活:清理微信公众号
  • ​ArcGIS Pro 如何批量删除字段
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (转)memcache、redis缓存
  • (转)人的集合论——移山之道
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net Web项目创建比较不错的参考文章
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET轻量级ORM组件Dapper葵花宝典
  • .net知识和学习方法系列(二十一)CLR-枚举
  • /etc/skel 目录作用
  • @KafkaListener注解详解(一)| 常用参数详解
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [20171106]配置客户端连接注意.txt
  • [Android]如何调试Native memory crash issue
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [bzoj1912]异象石(set)
  • [C# 网络编程系列]专题六:UDP编程
  • [CSS3备忘] transform animation 等
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复