Note that there are some explanatory texts on larger screens.

plurals
  1. POUndefined reference to vtable... Q_OBJECT macro
    primarykey
    data
    text
    <p>When I uncomment the Q_OBJECT macro that I need for signal-slot I get a undefined reference to vtable for MyApp error, but without the macro it compiles perfectly but I can't use signals and slots without it. I think I may be doing something stupid wrong, but please try helping because I realy can't find the problem. O and I know my code is untidy and am working on it.</p> <p>myapp.h:</p> <pre><code>#ifndef MYAPP_H #define MYAPP_H #include &lt;QApplication&gt; #include &lt;QEvent&gt; #include &lt;QObject&gt; #include &lt;QDebug&gt; class MyApp : public QApplication { public: MyApp( int argc, char** argv ); protected: bool eventFilter(QObject *object, QEvent *event); signals: void focusG(); void focusL(); }; #endif // MYAPP_H </code></pre> <p>myapp.cpp:</p> <pre><code>#include "myapp.h" MyApp::MyApp(int argc, char **argv): QApplication(argc, argv) { installEventFilter(this); } bool MyApp::eventFilter(QObject *object, QEvent *event) { if (event-&gt;type() == QEvent::ApplicationDeactivate) { qDebug() &lt;&lt; "Focus lost"; //focusL(); } if (event-&gt;type() == QEvent::ApplicationActivate) { qDebug() &lt;&lt; "Focus gained"; //focusG(); } return false; } </code></pre> <p>main.cpp:</p> <pre><code>#include &lt;QtGui/QApplication&gt; #include "qmlapplicationviewer.h" #include &lt;QObject&gt; #include &lt;QGraphicsObject&gt; #include &lt;QTimer&gt; #include &lt;QVariant&gt; #include "timecontrol.h" #include "scorecontrol.h" #include "Retry.h" #include &lt;QEvent&gt; #include "myapp.h" int main(int argc, char *argv[]) { //QApplication app(argc, 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-&gt;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)), rootObject, SLOT(setScore(QVariant))); QObject::connect(scorer, SIGNAL(setState(QVariant)), rootObject, SLOT(setState(QVariant))); QObject::connect(rootObject, SIGNAL(start()), probeer, SLOT(Reetry())); QObject::connect(probeer, SIGNAL(start()), timmer, SLOT(start())); QObject::connect(probeer, SIGNAL(stop()), timmer, SLOT(stop())); QObject::connect(probeer, SIGNAL(start(int)), scorer, SLOT(randomNum(int))); QObject::connect(probeer, SIGNAL(sReset()), timcon, SLOT(reset())); QObject::connect(probeer, SIGNAL(tReset()), scorer, SLOT(reset())); QObject::connect(timcon, SIGNAL(timeOut()), scorer, SLOT(reset())); QObject::connect(timcon, SIGNAL(setState(QVariant)), rootObject, SLOT(setState(QVariant))); QObject::connect(timcon, SIGNAL(changeFinal()), scorer, SLOT(changeFinal())); QObject::connect(scorer, SIGNAL(setFinal(QVariant)), rootObject, SLOT(setFinal(QVariant))); QObject::connect(&amp;app, SIGNAL(focusL()), probeer, SLOT(focusL())); QObject::connect(&amp;app, SIGNAL(focusG()), probeer, SLOT(focusG())); return app.exec(); } </code></pre> <p>BlockToucher.pro:</p> <pre><code># Add more folders to ship with the application, here folder_01.source = qml/Raker folder_01.target = qml DEPLOYMENTFOLDERS = folder_01 # Additional import path used to resolve QML modules in Creator's code model QML_IMPORT_PATH = symbian:TARGET.UID3 = 0x2004b49f # Smart Installer package's UID # This UID is from the protected range and therefore the package will # fail to install if self-signed. By default qmake uses the unprotected # range value if unprotected UID is defined for the application and # 0x2002CCCF value if protected UID is given to the application symbian:DEPLOYMENT.installer_header = 0x2002CCCF # Allow network access on Symbian symbian { #TARGET.CAPABILITY += NetworkServices vendorinfo = "%{\"Gerhard de Clercq\"}" ":\"Gerhard de Clercq\"" ICON = BlockToucher.svg } # If your application uses the Qt Mobility libraries, uncomment the following # lines and add the respective components to the MOBILITY variable. # CONFIG += mobility # MOBILITY += # The .cpp file which was generated for your project. Feel free to hack it. SOURCES += main.cpp \ timecontrol.cpp \ scorecontrol.cpp \ Retry.cpp \ myapp.cpp \ myapplication.cpp # Please do not modify the following two lines. Required for deployment. include(qmlapplicationviewer/qmlapplicationviewer.pri) qtcAddDeployment() HEADERS += \ timecontrol.h \ scorecontrol.h \ Retry.h \ myapp.h \ myapplication.h OTHER_FILES += \ qtc_packaging/debian_fremantle/rules \ qtc_packaging/debian_fremantle/README \ qtc_packaging/debian_fremantle/copyright \ qtc_packaging/debian_fremantle/control \ qtc_packaging/debian_fremantle/compat \ qtc_packaging/debian_fremantle/changelog compat \ qtc_packaging/debian_fremantle/changelog </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload