zoukankan      html  css  js  c++  java
  • Qt 子对象引用mainwindow指针的巧妙方法

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    sqlserver2008r2 连接服务器报错64
    java web---HTTP略讲
    Web测试中定位bug方法
    Java1.8API大类
    如何查看windows电脑信息(win10)
    debain系统安装open-vm-tools
    windowns电脑环境配置
    配置了环境变量,adb还是不能用
    已经配了环境变量,但是执行命令却打开了应用商店
    cpython,jpython,ironpython,micropython,etc的区别
  • 原文地址:https://www.cnblogs.com/jiguang321/p/11692736.html
Copyright © 2011-2022 走看看