在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在买来的控件(没有源码)的基础上,想加入QObject的一些特性,不得不多继承: class MyProgress : public CProgress, public QObject 但总是报错: release\moc_my_tool.cpp:80:12: error: 'qt_metacast' is not a member of 'CProgress' 清除临时文件,重新编译几次后,仍是如此,心想难道QT不支持别的类库基础上的多继承? 后来灵机一动,可能要把QObject写在最前面,这样Q_OBJECT宏才会立刻展开,并应用于后续的继承类,所以改成这样: class MyProgress : public QObject, public CProgress 这时候再编译就行了。
不知道是有意,还是无意,QWidget也是先继承QObject,然后再继承QPaintDevice的。 ------------------------------------------------------------------ 另外值得注意的是,继承的时候,要分别写上两个public(唉,C++认为人性本恶,默认都是私有的,这点和Delphi的世界观不一样),否则也会报错,即QObject的一些功能不能用于CProgress(比如connect功能)。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论