QT 编译不过的另一个问题:

1. 新建一个console工程

QT -= gui

CONFIG += c++ console
CONFIG -= app_bundle # The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0. SOURCES += \
main.cpp \
baseclass.cpp \
subclass.cpp \
subclass2.cpp
#grandclass.cpp # Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target HEADERS += \
baseclass.h \
subclass.h \
subclass2.h
#grandclass.h

2. 添加baseClass

baseclass.h

#ifndef BASECLASS_H
#define BASECLASS_H #include "QObject" class baseClass: public QObject
{
Q_OBJECT public:
baseClass(QObject * p = );
virtual ~baseClass() {} virtual void vMethod(int) = ; signals:
void signal1(); }; #endif // BASECLASS_H

baseclass.cpp

#include "baseclass.h"

baseClass::baseClass(QObject * p) : QObject(p)
{ }

3. 添加subClass

subclass.h

#ifndef SUBCLASS_H
#define SUBCLASS_H #include "baseclass.h" class subClass: virtual public baseClass
{
Q_OBJECT public:
subClass(QObject * p = );
virtual ~subClass() {};
virtual void vMethod(int) = ; signals:
void signal2(); }; #endif // SUBCLASS_H

subclass.cpp

#include "subclass.h"

subClass::subClass(QObject * p) : baseClass (p)
{ }

4. 添加subClass2

subclass2.h

#ifndef SUBCLASS2_H
#define SUBCLASS2_H #include "baseclass.h" class subClass2 : virtual public baseClass
{
Q_OBJECT public:
subClass2(QObject * p = 0); virtual void vMethod(int) = ; }; #endif // SUBCLASS2_H

subclass2.cpp

#include "subclass2.h"

subClass2::subClass2(QObject * p) : baseClass (p)
{ }

5 main.cpp

#include <QCoreApplication>
#include "subclass.h"
//#include "grandclass.h" int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv); //grandClass * sub = new grandClass(); return a.exec();
}

编译报错:/build-testQtSignalBug-Qt5_9_4_zynq-Debug/moc_subclass.cpp:68: error: cannot convert from pointer to base class 'QObject' to pointer to derived class 'subClass' via virtual base 'baseClass'

subClass *_t = static_cast<subClass *>(_o);
^

解决方法: 将subclass里的signals 删掉, 即不在subclass里声明信号量。

原因:不详。

最新文章

  1. 异步 HttpContext.Current 为空null 另一种解决方法
  2. cocos2d-x学习
  3. WPF学习之路(二) XAML
  4. IIS7 rename application or site
  5. Spark安装指南
  6. 【题解】【矩阵】【DP】【Leetcode】Minimum Path Sum
  7. 【zabbix系列】报警系统的设置和排除
  8. 关于hibernate的实体类中有集合类型转化成JSON的工具类 - 怀念今天的专栏 - 博客频道
  9. German Collegiate Programming Contest 2013:E
  10. rsyslogd配置文件详解
  11. centos7 python
  12. ubuntu18.04安装openresty
  13. jq 回车提交指定按钮
  14. 【RFT】【环境配置】Mac
  15. WIN10系统 如何自动调整系统时间
  16. sessionStorage 、localStorage、cookie
  17. 使用d3.v3插件绘制出svg图
  18. 在ubuntu16.04上搭建视频服务器
  19. 分别使用docx4j,jacob将文字与图片插入word中书签位置
  20. maven pom.xml配置

热门文章

  1. [CF666E]Forensic Examination:后缀自动机+线段树合并
  2. 安装python及其它
  3. sqli-labs(39)
  4. [CSP-S模拟测试]:硬币(博弈论+DP+拓展域并查集)
  5. C++入门经典-例2.9-输出十六进制数以及大写的十六进制数
  6. VUE生命周期demo
  7. NP-Hard问题和NP-Complete问题
  8. SpringBoot启动加载yml配置文件出现编码格式错误
  9. sqlserver2012语法
  10. 2.进行model和log的路径创建