QT多重继承的时候,要把QObject放在最前面,否则报错——C++认为人性本恶,默认都是私有的,这点和Delphi的世界观不一样
在买来的控件(没有源码)的基础上,想加入QObject的一些特性,不得不多继承:
class MyProgress : public CProgress, public QObject
但总是报错:
release\moc_my_tool.cpp:80:12: error: 'qt_metacast' is not a member of 'CProgress'
return CProgress::qt_metacast(_clname);
清除临时文件,重新编译几次后,仍是如此,心想难道QT不支持别的类库基础上的多继承?
后来灵机一动,可能要把QObject写在最前面,这样Q_OBJECT宏才会立刻展开,并应用于后续的继承类,所以改成这样:
class MyProgress : public QObject, public CProgress
这时候再编译就行了。
不知道是有意,还是无意,QWidget也是先继承QObject,然后再继承QPaintDevice的。
------------------------------------------------------------------
另外值得注意的是,继承的时候,要分别写上两个public(唉,C++认为人性本恶,默认都是私有的,这点和Delphi的世界观不一样),否则也会报错,即QObject的一些功能不能用于CProgress(比如connect功能)。
QT多重继承的时候,要把QObject放在最前面,否则报错——C++认为人性本恶,默认都是私有的,这点和Delphi的世界观不一样的更多相关文章
- 在Qt中配置海康工业相机SDK及遇到的问题(报错)
1.在项目的.pro文件里导入海康工业相机的SDK路径 INCLUDEPATH += \ D:\HKVersion\MVS_3.1.0\MVS\Development\Includes #这时到入Op ...
- vue项目中一些标签直接放在<template>下会报错Failed to compile with 1 errors
原因是a标签button以及element-ui的组件不能直接放在<template>下,需要先有一个div,其他标签要放在div下
- 7. mybatis:mapper-locations: 路径放在java路径下报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
解决方案:在pom.xml文件中的<build>标签内加上以下的<resources>内容即可 <build> <resources> <reso ...
- QT | 记录自己遇到的报错
QT 常见报错,及相应对策 0. 遇到所有莫名其妙的问题(完全按照教程,但一直报错) 删除工程文件同级目录下的构建文件(以build开头的文件夹) 重新执行qmake 重新构建项目 检查所有的路径问题 ...
- linux下执行QT可执行文件报错
老样子,不多BiBi,直接进入主题! 有时候在linux下编译好QT程序,用QTCreator运行没问题,打包移植到另一台机器上,用命令./XX执行就会报错:error while loading s ...
- mingw qt(可以去掉mingwm10.dll、libgcc_s_dw2-1.dll、libstdc++-6.dll的依赖,mingw默认都是动态链接gcc的库而TDM是静态链接gcc库,tdm版本更好用。用aspack压缩没有问题。qt本身不使用异常处理)good
原文地址:mingw qt作者:孙1东 不使用Qt SDK,使用mingw编译qt源代码所遇问题及解决方法: configure -fast -release -no-exceptions -no-r ...
- QT笔记之解决QT5.2.0和VS2012中文乱码 以及在Qt Creator中文报错
转载:http://bbs.csdn.net/topics/390750169 VS2012 中文乱码 1.方法一: 包含头文件 #include <QTextCodec> ....... ...
- qt中添加Q_OBJECT报错的问题
在qt编写的过程中添加Q_OBJECT后发现老是报错的问题 编译后老是报undefined reference to vtable for "xxx"的错误,后来发现在xxx.pr ...
- QT报错Error processing
执行命令:qmake modbus_ups_mlrl.pro modbus_ups_mlrl.pro文件内容: TEMPLATE = vclib CONFIG +=qt debug thread QT ...
随机推荐
- MySQL--连接属性
The capability flags are used by the client and server to indicate which features they support and w ...
- php修改配置文件php.ini设置文件上传大小讲解
打开php.ini,首先找到;;;;;;;;;;;;;;;;; File Uploads ;;;;;;;;;;;;;;;;;区域,有影响文件上传的以下几个参数: file_uploads = ...
- 八、桥接模式--结构模式(Structural Pattern)
桥梁模式:将抽象化(Abstraction)与实现化 (Implementation)脱耦,使得二者可以独立地变化. 桥梁模式类图: 抽象化(Abstraction)角色:抽象化给出的定义,并保存 一 ...
- WPF笔记(2.7 文字布局)——Layout
原文:WPF笔记(2.7 文字布局)--Layout 这一节介绍的是文字布局的几个控件:1.TextBlock 最基本的文字控件可以配置5个Font属性.TextWraping属性,&quo ...
- Grid++Report 报表开发工具
Grid++Report 报表开发工具 版本 更新日期 大小 下载 说明 Grid++Repoert6.0.0.6 2015/08/08 16.0M [下载] 锐浪报表工具最新版本,新增功能说 ...
- UVA 11111-Generalized Matrioshkas(栈)
题意:有很多层盒子,盒子里面再套盒子,一个盒子可能套多个独立的子盒子,但子盒子的总体积必须小于该盒子,否则不合法,输入给一行数,负数代表左边,正数代表右边,大小表示其体积,如-2,-1,1,2则表示体 ...
- Red and Black(简单dfs)
Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- B. Sereja and Mirroring
B. Sereja and Mirroring time limit per test 1 second memory limit per test 256 megabytes input stand ...
- MP3/WAV 播放
一.编译libmad 1.先下载压缩包到本地,并解压 tar -xvzf libmad-0.15.1b.tar.gz -C ./ 2.进入源代码文件夹并配置 编写一个配置文件,便于< ...
- nginx : TCP代理和负载均衡的stream模块
一直以来,Nginx 并不支持tcp协议,所以后台的一些基于TCP的业务就只能通过其他高可用负载软件来完成了,比如Haproxy. 这算是一个nginx比较明显的缺憾.不过,在1.90发布后这个认知将 ...