亲身体会:一种需要取得子类详细信息的情况(五种方法)

void MyProgressBar::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
        // -------------------- 取数据,测试数据 ---------------------------------
        const QAbstractItemModel *item_model = index.model(); // 根据当前索引取得模型(包括了无数信息)
        int nRow = index.row(); // 当前行(每次的当前行)
        // 注意,这个index.model是QT库自带的函数:http://doc.qt.io/qt-4.8/qmodelindex.html
        // 它当然只能返回一个QAbstractItemModel的指针,而不是经过我继承和改造的Model,这样一来它就无法取得我添加的额外信息
        // 这个时候,必须要把这个model下降为子类才能准确取得需要的信息,大概有5种方法
        // 要么使用dynamic_cast,要么进行RTTI,要么强行转换(相当于static_cast),要么在MyProgressBar里提前记录我新定义的Model的类型指针,不知道QT有没有额外的方法

        // 之所以发生这种问题的根本原因在于,这个类库不是自己写的,它所提供的函数只能取得父类指针
}
时间: 2024-11-03 22:12:41

亲身体会:一种需要取得子类详细信息的情况(五种方法)的相关文章

监听按钮点击事件的三种方式实现及调试信息输出的三种方式实现

监听按钮点击事件的三种方式实现: 1.匿名内部类 2.外部独立类 3.接口实现 package com.example.button; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View;

redis五种数据类型的使用场景

string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一段内容 设置及获取字符串的某一位(bit) 批量设置一系列字符串的内容 应用场景: String是最常用的一种数据类型,普通的key/value存储都可以归为此类,value其实不仅是String, 也可以是数字:比如想知道什么时候封锁一个IP地址(访问超过几次).INCRBY命令让这些变得很容易,

获取Java类中注解的详细信息

前言:这篇博客主要是为了后续的获取SpringMVC中的全部请求URL做的准备. public class AnnotationHelper { private static final AnnotationHelper helper = new AnnotationHelper(); protected AnnotationHelper() { } public static AnnotationHelper getInstance() { return helper; } /** * 得到类

成功企业家的第五种智慧

企业家天生就是一个多忧多虑的群体.对眼下中国企业家严重的安全感缺失或焦虑问题,要如何看待,如何应对,社会上出现了四种意见,每一种都充满了智慧,又不无缺憾. 前四种智慧最广为人知.最具影响力的,是劝企业家们“在商言商”,不去做自己不该做的事,不去碰那些碰不得的东西,以免自寻烦恼,自找苦吃.这其中包含的智慧是明显的:聪明人应该知道,什么是给定的,什么是可以改变的.不去改变自己可以改变的,人将庸庸碌碌,一事无成,这当然不是企业家的性格.努力去改变不能改变的,轻则劳而无获,很累很失落,重则鸡蛋碰石头,粉

C#读取Excel五种方式的体会

原地址: http://blog.csdn.net/dapengbusi/article/details/38117817 http://blog.csdn.net/dapengbusi/article/details/38118679 http://blog.csdn.net/dapengbusi/article/details/38118997 C#读取Excel五种方式的体会,布布扣,bubuko.com

Andriod中数据存储的五种方式

数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据5 网络存储数据 下面将为大家一一详细介绍. 第一种: 使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在 Activity中 重载窗

Android数据存储的五种方法汇总

本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面将为大家一一详细介绍. 第一种: 使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置

五种方法实现Java的Singleton单例模式

面试的时候经常会问到Java的单例模式,这道题能很好的考察候选人对知识点的理解程度.单例模式要求在系统运行时,只存在唯一的一个实例对象. 下面我们来详细剖析一下其中的关键知识点,并介绍五种实现方法,以及它们的优缺点. 一.最简单的方法是在类加载的时候初始化这个单独的实例. 首先,定义单例类(没有特别的,就是起个名字): 1 public class Singleton{ 其次,需要定义类变量将单例对象保存下来: 1 private static Singleton instance = new

五种方式让你在java中读取properties文件内容不再是难题

一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC+Mybatis整合开发的项目中通过java程序读取properties文件内容的方式进行了梳理和分析,先和大家共享. 二.项目环境介绍 Spring 4.2.6.RELEASE SpringMvc 4.2.6.RELEASE Mybatis 3.2.8 Maven 3.3.9 Jdk 1.7 Id