• Qt 子对象引用mainwindow指针的巧妙方法


    问题描述:最近在用qt开发项目的时候,有一个需要就是在子类中调用mainwindow指针,在mainwindow上显示内容。

    因为在mainwindow中需要生成子类的对象,所以不能在子类中引用mainwindow的头文件,这样会造成相互包含报错!

    后来查到大家推荐使用parentWidget这个方法,然而在我的项目中该函数返回的却是一个nullptr,这就让人郁闷了!

    不过好在还是有办法可以解决的:

    在子类的头文件中我并没有引用mainwindow的头文件,而是先定义了一个void指针

    cpp文件中,在构造函数中将接收到的父对象强转为mainwindow类型的指针,这样就完美解决问题,就可以在子类中开心的调用mainwindow中的成员函数了。

     有一点需要提醒和我一样白的小白的是,这句引用要放在子类的cpp文件中。

    然而,怎么使用这个指针呢?

     将void* 强转为 mainwindow* 就可以使用了。

    上述做法的原因是:指针变量的意义是存储内存块的首地址,只不过在使用的时候对于不同类型的指针所操作的内存长度不同,

    另外,为什么可以用void*呢?因为void* 可以转化为任何类型的指针,而其他则不可以转void*,举个例子:你可以说猫咪是动物,但不可以说动物是猫咪,嘻嘻,现在懂了吧!

    所以我们在使用的时候需要将void* 转为 mainwindow* ,这样就可以按照mainwindow在内存中的规则来操作了。

    虽然这样解决了问题,但是我还是觉得这样可能不是一个完美的解决办法,希望有更好的解决办法的小伙伴给个留言!

  • 相关阅读:
    spark map和mapPartitions的区别
    RDD实例
    Scala类和对象
    Scala的集合框架
    Scala的to和until
    用不同RequestMethod制作出restful规范的应用
    isc-dhcp-server的分配的地址列表在哪,linux/树莓派做无线路由器怎么查看已连接设备
    在java中实现通过身份证号码判断籍贯的小工具类
    解决eclipse写jsp javaee时自动代码提示弹出过慢的问题
    第一篇博兼测试博之稍稍修改一下博客主题
  • 原文地址:https://www.cnblogs.com/jiguang321/p/11692736.html
Copyright © 2020-2023  润新知