QT5笔记: 22. 自定义代理
代理作用:在界面发生编辑时可以指定编辑所用的组件,可以沟通Model和View
自定义代理需要继承的基类和需要实现的方法
使用步骤:
- 继承QStyledItemDelegate,实现上面的四个方法
- 在页面上声明一个继承后类的对象
- 类似代码
ui->tableView->setItemDelegateForColumn(0, intSpinDelegate);为某行、某列、某个单元格设置
例子:本例子中只展示修改的内容,其他代码同上节标准模型代码
QIntDelegate.h
#ifndef QINTDELEGATE_H
#define QINTDELEGATE_H
#include <QObject>
#include <QStyledItemDelegate>
class QIntDelegate : public QStyledItemDelegate
{
public:
QIntDelegate();
QIntDelegate(QWidget *parent = nullptr);
// QAbstractItemDelegate interface
public:
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;//生成一个editor
void setEditorData(QWidget *editor, const QModelIndex &index) const override;//设置editor数据,供编辑
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;//设置model数据,View数据写回model
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override;//设置editor的尺寸
};
#endif // QINTDELEGATE_H
QIntDelegate.cpp
#include "QIntDelegate.h"
#include <QSpinBox>
QIntDelegate::QIntDelegate()
{
}
QIntDelegate::QIntDelegate(QWidget *parent)
{
this->setParent(parent);
}
QWidget *QIntDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const//生成一个editor
{
QSpinBox *editorSpin = new QSpinBox(parent);
editorSpin->setMinimum(0);
editorSpin->setFrame(false);//设置边框
return editorSpin;
}
void QIntDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const//设置editor数据,供编辑
{
int data = index.model()->data(index, Qt::EditRole).toInt();//从index反向拿到model,然后拿到数据
QSpinBox *spinBox = qobject_cast<QSpinBox *>(editor);
spinBox->setValue(data);
}
void QIntDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const//设置model数据,View数据写回model
{
QSpinBox *spinBox = qobject_cast<QSpinBox *>(editor);
spinBox->interpretText();//可以保证拿到的是最新的值
int val = spinBox->value();
model->setData(index, val, Qt::EditRole);
}
void QIntDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const//设置editor的尺寸
{
editor->setGeometry(option.rect);
}
mainwindow中添加的内容
/**==================== 自定义代理新增内容 =========================**/
QIntDelegate *intSpinDelegate = new QIntDelegate(this);
QQualityComboboxDelegate *qualityEditor = new QQualityComboboxDelegate();
/**==================== 自定义代理新增内容 =========================**/
ui->tableView->setItemDelegateForColumn(0, intSpinDelegate);
ui->tableView->setItemDelegateForColumn(4, qualityEditor);
QT5笔记: 22. 自定义代理的更多相关文章
- Ext.Net学习笔记22:Ext.Net Tree 用法详解
Ext.Net学习笔记22:Ext.Net Tree 用法详解 上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat=&q ...
- 客户端使用自定义代理类访问WCF服务 z
通常在客户端访问WCF服务时,都需要添加服务引用,然后在客户端app.config或 web.config文件中产生WCF服务的客户端配置信息.若是每添加一个服务都是这样做,这样势必会将比较麻烦,能否 ...
- Scarpy 起始url 自定义代理 自定义去重规则
- start_urls - 内部原理 """ scrapy引擎来爬虫中去起始的URL: 1. 调用start_requests并获取返回值 2. v = iter(返回 ...
- 客户端使用自定义代理类访问WCF服务
通常在客户端访问WCF服务时,都需要添加服务引用,然后在客户端app.config或web.config文件中产生WCF服务的客户端配置信息.若是每添加一个服务都是这样做,这样势必会将比较麻烦,能否简 ...
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...
- [转载]SharePoint 2013搜索学习笔记之自定义结果源
搜索中心新建好之后在搜索结果页上会默认有所有内容,人员,对话,视频这四个结果分类,每个分类会返回指定范围的搜索结果,这里我再添加了部门日志结果分类,搜索这个分类只会返回部门日志内容类型的搜索结果,要实 ...
- 【设计模式】学习笔记17:代理模式之保护代理与Java反射
本文出自 http://blog.csdn.net/shuangde800 本笔记内容: 1. Java动态代理,反射机制 2. 保护代理 3. 应用保护代理实现的约会系统 ----------- ...
- nginx 自定义代理返回 404
在nginx的http段,加上一面的配置 proxy_intercept_errors on;//自定义代理返回的404错误提示
- Hadoop学习笔记—5.自定义类型处理手机上网日志
转载自http://www.cnblogs.com/edisonchou/p/4288737.html Hadoop学习笔记—5.自定义类型处理手机上网日志 一.测试数据:手机上网日志 1.1 关于这 ...
- SQL反模式学习笔记22 伪键洁癖,整理数据
目标:整理数据,使不连续的主键Id数据记录变的连续. 反模式:填充断档的数据空缺. 1.不按照顺序分配编号 在插入新行时,通过遍历表,找到的第一个未分配的主键编号分配给新行,来代替原来自动分配的伪主键 ...
随机推荐
- Pwn2own 2022 Tesla 利用链 (ConnMan 堆越界写 RCE)
Pwn2own 2022 Tesla 利用链 (ConnMan 堆越界写 RCE) Opening the doors and windows 0-click RCE on the Tesla Mod ...
- Python开发一个Instant Messaging(IM)(即时通讯)聊天工具:从理论到实践
一.引言 在现代社会中,即时通讯工具已经成为人们日常沟通的重要工具.开发一个IM聊天工具不仅能够提高我们的编程技能,还能让我们更好地理解即时通讯系统的原理.本文将详细介绍如何开发一个简单的IM聊天工具 ...
- 一款可以完整保留排版的PDF翻译,GitHub增长第一
最近看论文较多,顺手给大家推荐一个用下来觉得不错的开源PDF翻译工具:PDFMathTranslate 目前这款开源项目在GitHub上已经收获了7.6K Star,而且由于一直处于增长趋势榜第一的位 ...
- 埃尼阿克ENIAC与计算机发展,及信息技术发展史
一.埃尼阿克ENIAC 第二次世界大战期间,国军方为了研发新型的大炮和导弹,设立了"弹道研究实验室".实验室为了计算炮弹弹道,用了200多人加班加点进行计算,速度依感无法达到军方要 ...
- HttpClientFactory in ASP.NET Core 2.1 Part 3: 对处理器使用对外请求中间件
HttpClientFactory in ASP.NET Core 2.1 Part 3: 对处理器使用对外请求中间件 原文地址:https://www.stevejgordon.co.uk/http ...
- 中电金信:亚洲TOP1 霸榜15年
近日,国际权威语言服务研究机构CSA Research公布了<2022年全球语言服务提供商100强>和<亚太地区TOP 30语言服务商>排名报告. 中电金信凭借卓越的品质管控. ...
- 【C#】【平时作业】习题-11-ADO.NET
目录 选择题 简述并举例说明 什么是ADO.NET? 什么是连接字符串? connection对象的作用? commmand对象的作用? dataAdapter对象的作用? DataReader对象的 ...
- 龙哥量化:通达信DRAWICON的图标副图显示效果(鸡肋,可以不看)
新建一个副图指标,复制粘贴源码,先看一下效果图 DRAWTEXT_FIX(1,0.01,0.01,0,'通达信中DRAWICON的图标,方便大家折腾指标'),COLORMAGENTA; A:=CURR ...
- Qt音视频开发41-人脸识别嵌入式
一.前言 大概几年前搞过一套嵌入式linux上的人脸识别程序,当然人脸识别的核心算法并不是自己开发的,关于人脸识别算法这一块,虽然有众多的开源库可以用,甚至还可以用opencv搞算法训练深度学习之类的 ...
- Qt开源作品21-日志重定向输出类
一.前言 用qt开发商业程序已经十年了,陆陆续续开发过至少几十个程序,除了一些算不算项目的小工具外,大部分的程序都需要有个日志的输出功能,希望可以将程序的运行状态存储到文本文件或者数据库或者做其他处理 ...


