问题描述:最近在用qt开发项目的时候,有一个须要就是在子类中调用mainwindow指针,在mainwindow上显示内容。函数
由于在mainwindow中须要生成子类的对象,因此不能在子类中引用mainwindow的头文件,这样会形成相互包含报错!spa
后来查到你们推荐使用parentWidget这个方法,然而在个人项目中该函数返回的倒是一个nullptr,这就让人郁闷了!指针
不过好在仍是有办法能够解决的:对象
在子类的头文件中我并无引用mainwindow的头文件,而是先定义了一个void指针blog
cpp文件中,在构造函数中将接收到的父对象强转为mainwindow类型的指针,这样就完美解决问题,就能够在子类中开心的调用mainwindow中的成员函数了。内存
有一点须要提醒和我同样白的小白的是,这句引用要放在子类的cpp文件中。开发
然而,怎么使用这个指针呢?get
将void* 强转为 mainwindow* 就可使用了。qt
上述作法的缘由是:指针变量的意义是存储内存块的首地址,只不过在使用的时候对于不一样类型的指针所操做的内存长度不一样,变量
另外,为何能够用void*呢?由于void* 能够转化为任何类型的指针,而其余则不能够转void*,举个例子:你能够说猫咪是动物,但不能够说动物是猫咪,嘻嘻,如今懂了吧!
因此咱们在使用的时候须要将void* 转为 mainwindow* ,这样就能够按照mainwindow在内存中的规则来操做了。
虽然这样解决了问题,可是我仍是以为这样可能不是一个完美的解决办法,但愿有更好的解决办法的小伙伴给个留言!