• 第五十八课、自定义模型类(上)------------------狄泰软件学院


     一、自定义模型类

    1、QStandardItemModel是一个通用的模型类

    (1)、能够以任意的方式组织数据(线程、非线性)

    (2)、数据组织的基本单位为数据项(QStandardItem)

    (3)、每一个数据项能够存储多个具体数据(附加数据角色)

    (4)、每一个数据项能够对数据状态进行控制(可编辑、可选...)

    2、Qt中的通用模型类QStandardItemModel

    (1)、QStandardItemModel继承自抽象的模型类QAbstractItemModel

    (2)、QStandardItem与QAbstractItemModel是聚合关系

    (3)、QAbstractItemModel里面存储的东西是各种各样的

    (4)、变体类型可以返回不同的类型

    3、Qt中的变体类型QVariant(类型可变)

    (1)、 QVariant是一个用于封装的类型

    (2)、QVariant能够表示大多数常见的值类型

    (3)、QVariant每次只能封装(保存)单一类型的值

    (4)、QVariant的意义在于能够设计“返回类型可变的函数”

    4、变体类型QVariant中的常用成员函数

      

    #include <QtCore/QCoreApplication>
    #include <QVariant>
    #include <QPoint>
    #include <QDebug>
    #include <QString>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        
        QVariant v1(1);
        QVariant v2(3.14);
        QVariant v3("520");
        QVariant v4(QPoint(15, 15));
        QVariant v5;
    
        qDebug() << v1.type();//指的是v1存储的值的类型
        qDebug() << v1.typeName();
        qDebug() << v1.toInt();
    
        qDebug() << endl;
    
        qDebug() << v2.type();
        qDebug() << v2.typeName();
        qDebug() << v2.toInt();//会发生截断
        qDebug() << v2.toDouble();
        qDebug() << v2.value<double>();//注意使用方法,模板
    
        qDebug() << endl;
    
        qDebug() << v3.type();
        qDebug() << v3.typeName();
        qDebug() << v3.toInt();
        qDebug() << v3.value<QString>();
    
        qDebug() << endl;
    
        bool k = true;
    
        qDebug() << v4.type();
        qDebug() << v4.typeName();
        qDebug() << v4.toInt(&k);//0
        qDebug() << k;//false
        qDebug() << v4.toPoint();
    
        qDebug() << endl;
    
        qDebug() << v5.isValid();//false, 因为v5里面没有装具体的类型数据,所以是无效的,以后使用前都应该判断一下
        return a.exec();
    }
    main.cpp
    //打印结果
    QVariant::int
    int
    1
    
    
    QVariant::double
    double
    3
    3.14
    3.14
    
    
    QVariant::QString
    QString
    520
    "520"
    
    
    QVariant::QPoint
    QPoint
    0
    false
    QPoint(15,15)
    
    
    false

    二、工程中的使用

    1、工程中常用模型设计

    (1)、解析数据源中的数据(数据库、网络、串口等)

    (2)、将解析后的数据存入QStandardItem对象中(解析成可读的形式)

    (3)、根据数据间的关系在QStandardItemModel对象中组织数据项

    (4)、选择合适的视图显示数据值

    2、工程中常用的模块设计

     

    3、实例分析

    (1)、在文件中以行的形式存储了考试成绩信息(ID、Name、Score)

    (2)、开发GUI程序显示文件中的数据

    A、计算平均成绩

    B、查找最好成绩和最坏成绩

    C、可刷新显示的内容和删除的内容

    4、系统架构图

    (1)、将读文件这种底层操作封装在数据层完成

    (2)、读后数据到了内存,然后交于数据表示层来进行具体表示

    (3)、数据表示层交于数据组织层(相当于一个模型),数据组织层根据需要传给视图

    (4)、显示数据

     

    5、系统核心类图(每一次对应一个(或者一组)类)

    6、系统实现

    Next Lesson

    三、小结

     (1)、QStandardItemModel是一个通用的模型类

    (2)、QStandardItemModel能够以任意的方式组织数据

     (3)、使用QVariant能够设计“返回值类型可变的函数”

    (4)、工程中常用数据应用架构为4层结构:数据层、数据表示层、数据组织层、数据显示层

  • 相关阅读:
    一个判断浏览器类型的JS
    asp中输出xml “文本内容中发现无效字符”问题的解决(转)
    Excel VBA工程密码之最简单破解法
    爆破AspriseOCR 4.0
    vi编辑器的使用(转载)
    数据挖掘(转载)
    简单工厂模式(SimpleFactory)
    工厂方法模式(Factory Method)
    让gridview默认处于编辑模式并取得编辑后的值
    GDB调试精粹及使用实例(转载)
  • 原文地址:https://www.cnblogs.com/gui-lin/p/6527183.html
Copyright © 2020-2023  润新知