QT Callback System noch nicht ganz verstanden



  • Der Code verursacht bei mir leider folgenden Fehler:

    Project : Console application
    Compiler : GNU GCC Compiler (called directly)
    Directory : D:\Dokumente und Einstellungen\*\Eigene Dateien\Eigene Programme\QT\QT (0)\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.cpp
    Linking executable: console.exe
    .objs\main.o:main.cpp:(.text_ZN8MyWidgetD1Ev[MyWidget::~MyWidget()]+0xb): undefined reference to `vtable for MyWidget' .objs\\main.o:main.cpp:(.text_ZN8MyWidgetD1Ev[MyWidget::~MyWidget()]+0x17): undefined reference to vtable for MyWidget' .objs\\main.o:main.cpp:(.text$_ZN8MyWidgetC1EP7QWidget[MyWidget::MyWidget(QWidget*)]+0x72): undefined reference tovtable for MyWidget'
    .objs\main.o:main.cpp:(.text_ZN8MyWidgetC1EP7QWidget[MyWidget::MyWidget(QWidget*)]+0x7e): undefined reference to `vtable for MyWidget' .objs\\main.o:main.cpp:(.text_ZN8MyWidget2trEPKcS1_[MyWidget::tr(char const
    , char const
    )]+0x1c): undefined reference to `MyWidget::staticMetaObject'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 2 seconds)

    Was bedeutet das? Was GENAU ist ein Makro - Muss ein Programm dann anders kompiliert werden?



  • hast du

    qmake DATEINAME.pro
    

    nochmal ausgefuehrt bevor du es kompiliert hast ?

    mfg,
    julian



  • ich habe qmake im Leben noch nie benutzt 😞
    Ich hab mir den Installer für die bereits fertiggebaute Version von QT OpenSource besorgt. Wie rufe ich qmake denn auf? Ich finde mich in der Kommandozeile leider nciht sehr gut zu recht, also bitte entschuldigt die Frage.



  • start->ausfuehren->"cmd"

    cd LW:\Pfad\zum\Projekt
    

    falls es noch kein pro-file gibt:

    qmake -project
    

    dann in jedem fall

    qmake <dateiname>.pro
    

    wobei dateiname, sofern der von qmake generierte beibehalten wird, meist der name des uebergeordneten verzeichnisses ist. (eingabe ohne eckige klammern)

    (unter linux halt terminal(-emulator) oeffnen und in das entsprechende verzeichnis navigieren, auch mittels cd).

    dazu sollte man aber auf jeden fall mal die seiten zu qmake im assistant lesen.

    danach halt kompilieren per make.

    mfg,
    julian



  • "Der Befehl "qmake" ist entweder falsch geschrieben oder konnte nicht gefunden werden"

    Kann man das eigentlich auch von Code::Blocks aus machen?



  • man kann afaik code blocks fuer qt-projekte nutzen, aber nicht einfach so. mal googlen oder ggf. hier gucken: www.qtforum.de/forum

    du musst den absoluten pfad zu qmake angeben oder das verzeichnis, in dem qmake liegt, zur PATH umgebungsvariable hinzufuegen.

    mfg,
    julian



  • so weit so gut - ich habe nun eine Datei mit dem Namen "QT (3).pro"

    Wenn ich nun

    "make QT (3).pro"

    eingebe bekomme ich allerdings den Fehler:

    make.exe: *** No rule to make Target 'QT'. Stop.

    Wie gehe ich damit um ?

    Vielen dank für eure bisherige Hilfe (ich lerne ^^)



  • dateinamen (bzw. allgemein strings) mit leerzeichen _immer_ in anfuehrungszeichen!
    und ich glaube, dass du unter windows mingw nutzen musst. muesste so gehen glaub ich (kanns gerade nicht testen):

    mingw32-make "QT (3).pro"
    

    mfg,
    julian


  • Mod

    Für das Einrichten von C::B und QT solltest du mal in das offizielle C::B Forum schauen:
    http://forums.codeblocks.org



  • Bei:

    make "QT (3).pro"

    bekomme ich die Meldung:

    make: Nothing to be done for 'QT (3).pro'

    Was machen?



  • oops, sorry mein fehler, hab nicht nachgedacht.
    du musst ausfuehren

    qmake PROJECTFILE.pro
    

    -> makefile(s) wird (werden) erstellt.

    mingw32-make
    

    -> kompilieren, aber mithilfe des enstandenen makefiles. make kennt das format der qt project files nicht. die sind nur fuer qmake da, damit aus den enthaltenen infos ein makefile erstellt werden kann.

    mfg,
    julian



  • Also... qmake project.pro funktioniert. Es entstehen einige neue Dateien unter andrem eine mit dem Namen Makefile (keine Endung) eine Makefile.debug und eine Makefile.Release

    Nur wie kompiliere ich das ganze nun?

    wenn ich "mingw32-make.exe" ausführe bekomme ich die Meldung:

    mingw32-make.exe ***: No rule to make target 'qt', needed my 'makefile'. Stop.



  • ist die QTDIR umgebungsvariable richtig gesetzt?
    was "richtig" ist, erfaehsrt du per google oder vllt auch im assistant.

    mfg,
    julian



  • in anbetracht der Tatsache, dass QMake funktioniert würde ich ja denken, dass die Variable rihctig gesetzt ist.



  • noe, das bedeutet, denk ich, nur, dass das verzeichnis mit qmake im PATH enthalten ist.
    kann sein dass ich falsch liege, aber waer fuer mich logisch. lieber mal checken.

    mfg,
    julian



  • Also... eine Umgebungsvariable mit dem Namen QTDIR existiert bei mir überhaupt nicht 😞
    Leider finde ich aber nirgendwo raus, wo die hinzeigen muss. Kannst du mir villeicht mal schreiben auf welchen QT Unterordner sie bei dir zeigt?



  • bei mir im win system:

    C:\Dokumente und Einstellungen\julian>set QTDIR
    QTDIR=C:\Qt-4.2.3
    

    mfg,
    julian



  • Beim 2. Aufruf von qmake brauchst du den Dateinamen nicht angeben. Auch unter Windows kann man make verwenden, wenn man die Qt Command Promt verwendet (zu finden im Startmenue). Trolltech hat naemlich einen Link von make auf mingw32-make gesetzt. Wenn du die Qt Command Promt verwendest, musst du btw auch keine weiteren Umgebungsvariablen setzen..



  • zum make unter windows: prinzipiell richtig, aber ich hatte z.b. mal irgendein anderes make tool unter windows installiert, was mit qt nicht gearbeitet hat.
    und dann musste ich immer "make.bat" aufrufen, was aber wie du schon sagtest eine "verknuepfung" auf "mingw32-make" ist.
    und da hab ich mir halt angewoehnt gleich "mingw32-make" zu nutzen, dann ist es auch klar welches make tool es ist.

    was das fuer ein anderes make tool war - frag mich nicht das system gibts nicht mehr, kam mir auch komisch vor. aber meine qt projekte hat es nicht kompiliert.

    mfg,
    julian



  • also der QT Command Prompt verrät mir, dass meine QTDIR Variable auf F:\QT\4.3.1 gesetzt ist. Wenn ich nun (im QT Command Prompt) in meinen Projektordner wechsele und make oder auch make "qt (3).pro" eingebe bekomme ich weiterhin ein freundliches:

    mingw32-make: *** No rule to make target 'qt', needed by 'makefile'. Stop.

    Ist das jetzt das entgültige aus für meine GUI Programmierungs Zukunft?


Anmelden zum Antworten