大佬教程收集整理的这篇文章主要介绍了c – QObject继承Ambiguous Base,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class MyApp : public QApplication,public QObject { Q_OBJECT ... }
这是我的(凌乱)Main.cpp:
#include <QtGui/QApplication> #include "qmlapplicationviewer.h" #include <QObject> #include <QGraphicsObject> #include <QTimer> #include <QVariant> #include "timecontrol.h" #include "scorecontrol.h" #include "Retry.h" #include <QEvent> #include "myapp.h" int main(int argc,char *argv[]) { MyApp app(argc,argv); QmlApplicationViewer viewer; viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockLandscape); viewer.setMainQmlFile(Qlatin1String("qml/Raker/main.qml")); viewer.showExpanded(); QObject *rootObject = viewer.rootObject(); QTimer *timmer = new QTimer; timmer->setInterval(1000); TimeControl *timcon = new TimeControl; scorecontrol *scorer = new scorecontrol; Retry *probeer = new Retry; QObject::connect(timmer,SIGNAL(timeout()),timcon,SLOT(updateTime())); QObject::connect(timcon,SIGNAL(setTime(QVariant)),rootObject,SLOT(setTime(QVariant))); QObject::connect(rootObject,SIGNAL(blockClicked(int,int)),scorer,SLOT(checkRight(int,int))); QObject::connect(scorer,SIGNAL(setscore(QVariant)),SLOT(setscore(QVariant))); QObject::connect(scorer,SIGNAL(setState(QVariant)),SLOT(setState(QVariant))); QObject::connect(rootObject,SIGNAL(start()),probeer,SLOT(Reetry())); QObject::connect(probeer,timmer,SLOT(start())); QObject::connect(probeer,SIGNAL(stop()),SLOT(stop())); QObject::connect(probeer,SIGNAL(start(int)),SLOT(randomNum(int))); QObject::connect(probeer,SIGNAL(sReset()),SLOT(reset())); QObject::connect(probeer,SIGNAL(tReset()),SLOT(reset())); QObject::connect(timcon,SIGNAL(timeOut()),SLOT(reset())); QObject::connect(timcon,SLOT(setState(QVariant))); QObject::connect(timcon,SIGNAL(changeFinal()),SLOT(changeFinal())); QObject::connect(scorer,SIGNAL(setFinal(QVariant)),SLOT(setFinal(QVariant))); QObject::connect(&app,SIGNAL(focusL()),SLOT(focusL())); QObject::connect(&app,SIGNAL(focusG()),SLOT(focusG())); return app.exec(); }
MyApp.cpp中:
#include "myapp.h" #include <QDebug> #include <QObject> MyApp::MyApp(int argc,char **argv): QApplication(argc,argv) { installEventFilter(this); } bool MyApp::eventFilter(QObject *object,QEvent *event) { if (event->type() == QEvent::ApplicationDeactivate) { qDebug() << "Focus lost"; focusL(); } if (event->type() == QEvent::ApplicationActivate) { qDebug() << "Focus gained"; focusG(); } return false; }
现在,您的继承图如下所示(请注意MyApp对象继承的两个QObject实例):
| QObject | | QObject | \ / \ | QApplication | \ / \ / | MyApp |
您应该保持继承图是线性的,而不是使用拆分继承方案,这意味着拥有一个只包含一个基类实例的派生类.所以你想要这样的东西:
QObject | | QApplication | | MyApp
以上是大佬教程为你收集整理的c – QObject继承Ambiguous Base全部内容,希望文章能够帮你解决c – QObject继承Ambiguous Base所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。