Qt Customize QVariant】的更多相关文章

Customize QVariant #include <QCoreApplication> #include <QVariant> #include <QDebug> struct Str{ int num; bool flag; }; Q_DECLARE_METATYPE(Str) int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); #if 0 Str* pst = new Str;…
QStandardItemModel类中的函数 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE; 中有一个QVariant类型变量. QVariant类类似于C++联合(union)数据类型,它不仅能够保存很多Qt类型的值,包括QColor,QBrush,QFont,QPen,QString和QSize等,也能够存放Qt的容器类型的值…
0.说明 QVariant可以表现出Qt数据类型中最普遍的行为. 一个QVariant对象中一次只保留一个type()的单个值(有的type()可以是多值的,例如StringList),可以用convert()将它的类型转换为不同的类型,用toT()(这里的并不是实际的函数,T是一个泛型)获取它的值,如toInt(), toString(),它们返回的值是const的. 如果一个QVariant在定义时就是一个null值,那么它在转化为其它类型时,依然是null. GUI类型 由于QVarian…
简述 本节主要解决自定义排序衍生的第二个问题-将整形显示为字符串,而排序依然正常. 下面我们介绍三种方案: 委托绘制 用户数据 辅助列 很多人也许会有疑虑,平时都用delegate来绘制各种按钮.图标.图形等操作,它还能排序?当然,它本身是不会排序的,但他的高级用法之一就是-辅助排序. 简述 委托绘制 效果 QStyledItemDelegate 眼见不一定为实 用户数据 QAbstractTableModel QSortFilterProxyModel 辅助列 效果 QAbstractTabl…
在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来配置文件.注册表.数据库.或者是server. 无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分都会被用到,例如:单击一个用户头像,显示该用户的详细信息(等级.昵称.姓名.个人说明). 简述 常见接口 数据源 setData和data 单独存储 整体存储 setItemData和itemData setUserData和userData 自定义数据 常见接口 Qt中,可以通过绝大部分已有的接口来存数数据.获…
转载:落叶知秋时 类QabstractItemModel,QabstractListModel,QAbstractTableModel不保存数据,用户需要从这些类派生出子类,并在子类中定义某种数据结构来保存数据. 与此不同,类QStandardItemModel负责保存数据,每个数据项被表示为类QStandardItem的对象.接下来,我们主要从两个方面介绍类QStandardItemMode的内容. 首先阐述如何使用类QStandardItem保存一个数据项, 再阐述如何使用类QStandar…
简述 在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来自配置文件.注册表.数据库.或者是Server. 无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分都会被用到,例如:单击一个用户头像,显示该用户的详细信息(等级.昵称.姓名.个人说明). 常见接口 Qt中,可以通过绝大部分已有的接口来存数数据.获取数据.例如: 存储数据 setData() setItemData() setUserData() 获取数据: data() itemData() user…
1. 写在前面 过滤功能源自项目上交互优化用户体验,在表头添加过滤符号实现过滤,替换以往在表格上方占用一行过滤项进行过滤. 2. 过滤提示 过滤提示就是三态图标(normal,hover,press).这三种状态的实现通过鼠标移动事件和鼠标点击事件来实现.具体实现如下: 1)hover状态在鼠标移动事件中实现 void CFilterHeaderView::mouseMoveEvent(QMouseEvent *e) { m_hover = logicalIndexAt(e->pos()); )…
json数据可保存小量的数据在本地的json文件中.QT有两种方式操作:(1).cJSON (2).QT的操作json数据的类. 应用:将监控预案数据保存在本地中. 1.首先根据预案结构创建一个json格式的数据框架: 2.将监控预案树转化成json数据,再保存为json文件. void VideoPreview::setPlanTreeDataToJsonFile() { //将m_pPlanTree预案数据转化成json数据写入文件 cJSON* pData = cJSON_CreateAr…
前面两节讲的model是一维的,这次开始二维的也就是我们常说的Table,相对与list,我们多了一个列的概念. 下面讲解一个例子.我先说明一下我们这个例子,在程序目录下,我们有一个文本文件,其中存放的学生信息. 数据存放的格式 学号 姓名 性别 xxx xxx x 每个学生的信息占一行,现在我们需要将这个文件中的所有学生信息加载显示. 在例子中主要涉及这几个类,Student,FileReader和DataTableModel类. Student是学生实体类,FileRead从文件加载数据,后…