继承QAbstractListModel,结合QListView

这里想要写一个QAbstractListModel的子类,学习一下如何实例化QAbstractListModel。

QAbstractListModel子类化-CSDN博客

QVariant与自定义类型互转之奇巧淫技_qt 类型转 qvariant-CSDN博客

#pragma once#include <QStyledItemDelegate>
#include <qmetatype.h>class QListView;
class WItemDelegate1 : public QStyledItemDelegate
{Q_OBJECTpublic:WItemDelegate1(QListView* parent = nullptr);~WItemDelegate1();void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override;QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override;
};
#include "WItemDelegate1.h"
#include "qlistview.h"
#include "qpainter.h"
#include "qsqlquerymodel.h"
#include <qdebug.h>
#include "ListModel.h"
WItemDelegate1::WItemDelegate1(QListView* parent): QStyledItemDelegate(parent)
{
}WItemDelegate1::~WItemDelegate1()
{}
QSize WItemDelegate1::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const
{return QSize(option.rect.width(), 60);
}
void WItemDelegate1::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{if (index.isValid()) {int row = index.row();QSqlQueryModel* Model = (QSqlQueryModel*)index.model();QVariant data = index.data(Qt::DisplayRole);WItemData d = data.value<WItemData>();QRect rect = option.rect;//qDebug() << rect;int wx = 5;int wy = 5;rect.setX(rect.x() + wx);rect.setY(rect.y() + wy);rect.setWidth(rect.width() - wx * 2);rect.setHeight(rect.height() - wy * 2);//qDebug() << rect;QString text = QString("rowid:%1,col1:%2,col2:%3").arg(d.rowid).arg(d.col1).arg(d.col2);painter->setBrush(QColor(0, 0, 0));painter->drawRoundedRect(rect, 5, 5);painter->setPen(QColor(255, 255, 255));painter->drawText(rect, text, QTextOption(Qt::AlignCenter));}
}
#pragma once#include <QAbstractListModel>
#include <QMetaType>typedef struct {int rowid;int col1;int col2;
} WItemData;Q_DECLARE_METATYPE(WItemData)class ListModel  : public QAbstractListModel
{Q_OBJECTpublic:ListModel(QObject *parent = nullptr);~ListModel();//当子类化QAbstractListModel时,必须提供rowCount()和data()函数的实现virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;virtual int	rowCount(const QModelIndex& parent = QModelIndex()) const;private:QList<WItemData> m_List;
};
#include "ListModel.h"ListModel::ListModel(QObject *parent): QAbstractListModel(parent)
{for (int i = 0; i < 100000; i++){WItemData data;data.rowid = i;data.col1 = i;data.col2 = i;m_List << data;}
}ListModel::~ListModel()
{}QVariant ListModel::data(const QModelIndex& index, int role /*= Qt::DisplayRole*/) const
{if (!index.isValid()){return QVariant();}if (Qt::DisplayRole == role){WItemData data(m_List.at(index.row()));QVariant variant;variant.setValue<WItemData>(data);return variant;}return QVariant();
}int ListModel::rowCount(const QModelIndex& parent /*= QModelIndex()*/) const
{return m_List.size();
}
    ListModel* listModel = new ListModel;listView = new QListView;listView->setModel(listModel);WItemDelegate1* wItemDelegate = new WItemDelegate1(listView);listView->setItemDelegate(wItemDelegate);listView->show();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/39156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python:Pycharm安装指南

三、Pycharm安装指南 在开始之前今天内容之前&#xff0c;将上篇的初体验练习题公布如下&#xff1a; 初体验练习题&#xff1a;输入两个字符&#xff0c;将他们组合后输出。 str1 input("请输入名字&#xff1a;") str2 input("请输入城市&#xff1a;&qu…

嵌套组合请求对象的校验与全局捕捉

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Lumerical Script 算法,查找数组中对应值的所有索引值

Lumerical Script 算法,查找数组中对应值的所有索引值 正文正文 比如,有一个数组如下: A = [0.5, 0.5, 0.5, 1, 2, 3];我们想要获取数组 A 中所有等于0.5 的值对应的索引值。 print(find(A ==

总结:Linux用户权限管理

一、背景 经常会涉及到某某用户没有权限操作、环境不一样等问题,不明白,本文详细记录下学习过程。 二、目录和文件权限 1、初步案例 我通过 ll命令 查看到data目录: [root@weiwei-vm-dev-1aa9cbe27 /]# ll drwxrwxrwx 9 root root 4096 Jun 26 15:35 data id hubbl…

游戏AI的创造思路-技术基础-tanh函数详解

又来搞事情&#xff0c;总想着把sigmoid函数替换成其他函数作为激活函数&#xff0c;或者找到更合适某一段训练的函数&#xff0c;所以今天来聊聊tanh函数&#xff08;谁让咱当年差点去了数学系&#xff0c;结果还是在数学系转过去计算机的&#xff09; 目录 3.9. tanh函数详解…

反向沙箱技术:安全隔离上网

在信息化建设不断深化的今天&#xff0c;业务系统的安全性和稳定性成为各公司和相关部门关注的焦点。面对日益复杂的网络威胁&#xff0c;传统的安全防护手段已难以满足需求。深信达反向沙箱技术&#xff0c;以其独特的设计和强大的功能&#xff0c;成为保障政务系统信息安全的…

LeetCode1748.唯一元素的和

题目要求: 给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。请你返回 nums 中唯一元素的 和 。示例 1&#xff1a;输入&#xff1a;nums [1,2,3,2] 输出&#xff1a;4 解释&#xff1a;唯一元素为 [1,3] &#xff0c;和为 4 。 示例 2&#xff1a;输入…

XTDrone-固定翼无人机编队跟踪无人车-配置教程

配置使用ROS版本为Neotic 1 配置 1.1 加载固定翼无人机编队跟踪控制工程文件 cp -r ~/XTDrone/coordination/fixed_wing_formation_control ~/catkin_ws/src 1.2 加载一些用到的功能包 sudo apt-get install ros-noetic-serial #根据自己的ROS版本修改 sudo apt-get insta…

209.力扣每日一题:质数的最大距离

代码解决 class Solution { public:// 判断一个数是否为质数bool isPrime(int n) {if (n < 1) {return false;}if (n < 3) {return true;}if (n % 2 0 || n % 3 0) {return false;}for (int i 5; i * i < n; i 6) {if (n % i 0 || n % (i 2) 0) {return false;…

追踪WebKit的缺陷:深入探索Bug跟踪系统

&#x1f41b; 追踪WebKit的缺陷&#xff1a;深入探索Bug跟踪系统 WebKit是一个活跃的开源项目&#xff0c;其开发过程中不可避免地会产生bug。为了有效地管理和修复这些缺陷&#xff0c;WebKit项目采用了一套成熟的bug跟踪系统。本文将详细介绍WebKit的bug跟踪系统是如何工作…

如何利用GPT-4o生成有趣的梗图

文章目录 如何利用GPT-4o生成有趣的梗图一、引言二、使用GPT-4o生成梗图1. 提供主题2. 调用工具3. 获取图片实际案例输入输出 三、更多功能1. 创意和灵感2. 梗图知识 四、总结 如何利用GPT-4o生成有趣的梗图 梗图&#xff0c;作为互联网文化的一部分&#xff0c;已经成为了我们…

深圳比创达电子EMC|EMC电磁兼容性行业:推动电子产品向更高发展

随着科技的飞速发展&#xff0c;电子产品在我们的日常生活中无处不在&#xff0c;从智能手机到智能家居&#xff0c;从医疗设备到工业自动化&#xff0c;这些设备的普及和更新换代对电磁兼容性&#xff08;EMC&#xff09;提出了更高的要求。 一、EMC电磁兼容性行业的概述 EM…

mac有什么解压软件 mac怎么解压7z软件 苹果电脑好用的压缩软件有哪些

众所周知&#xff0c;macOS集成解压缩软件归档实用工具&#xff0c;可直接解压zip格式的压缩包。但对于其他比较常见的格式&#xff0c;诸如RAR、7z、TAR等&#xff0c;则无能为力&#xff0c;不过&#xff0c;我们可以选择大量第三方解压缩软件&#xff0c;帮助我们更好地完成…

sqlmap常用参数及示例

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 以下是 sqlmap 的一些常用 API&#xff08;参数&#xff09;及其示例用法&#xff…

2024.7.2作业

1. 梳理笔记(原创&#xff01;&#xff01;&#xff01;) 2.解析代码&#xff1a;分析每一步变量的取值 #include <stdio.h> int main(int argc, char *argv[]) { int a 10; //a10 int b a--; //b10 int c a b 2; //a9 b10 c21 int d (b--…

大模型参数规模扩大是趋势

©作者|TW 来源|神州问学 一、引言 近两年互联网科技领域&#xff0c;大模型成为了各大企业竞相发布的热点话题。百度、腾讯、阿里和华为等公司相继推出了自己的AI大模型&#xff0c;使得“大模型”这一概念迅速走入大众视野。大模型以其庞大的参数规模和强大的性能&…

玉林师范学院宿舍管理系统的设计与实现19633

玉林师范学院宿舍管理系统设计与实现 摘要&#xff1a;随着大学生人数的增加&#xff0c;宿舍管理成为高校管理中的重要问题。本论文旨在研究玉林师范学院宿舍管理系统&#xff0c;探讨其优势和不足&#xff0c;并提出改进建议。通过对相关文献的综述和实地调研&#xff0c;我们…

button1 <Button>: Missing Constraints in ConstraintLayout

书籍 《第一行代码 Android》第三版 开发 环境 Android Studio Jellyfish | 2023.3.1 问题 在学习3.2.2 创建和加载布局章节,在first_layout.xml中增加一个按钮button1时报错:"button1 <Button>: Missing Constraints in ConstraintLayout" 分析 产生这个…

不同集成学习算法的比较:随机森林、AdaBoost、XGBoost、LightGBM

好的&#xff0c;我来为您比较一些常见的集成学习算法&#xff0c;并生成表格形式以便于对比&#xff1a; 算法主要思想和特点应用场景并行处理支持稳定性和鲁棒性主要优化策略和技术AdaBoost使用加权投票组合多个弱分类器&#xff0c;逐步提升分类器性能二分类和多分类问题&a…

【Python】已解决:NameError: name ‘unichr’ is not defined

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;NameError: name ‘unichr’ is not defined 一、分析问题背景 在使用Python进行编程时&#xff0c;有时会遇到“NameError: name ‘unichr’ is not defined”…