QT frage zur Vorwärtsdeklaration in klassen mit designer



  • hallo gemeinde.

    ich bin nun umgestiegen auf qt und hab da ein ziemliches anfängerproblem denke ich:

    also
    vorher:
    habe ich alles ohne den designer gemacht und buttons checkboxn etc "per hand" erstellt und in Form gebracht...

    nun hab ich ein prob:

    ich habe in einem tut zu QT designer gelesen dass ich meine buttons etc nicht mehr in der header.h via Vorwärtsdeklaration beschreiben muss (z.B. QPushButton *button), sondern dass das beim verwenden des designers automatisch in der ui_header.h automatisch geschiet....

    FRAGE:
    ist das richtig so oder liege ich da falsch weil er mir wenn ich das nicht tue bringt dass das gewünschte element nicht deklariert wurde..



  • Kannst du das etwas genauer beschreiben, was du wo wie machst, und welche Fehler du erhältst?

    Im ui_meineKlasse.h wird alles includiert, was in der FOrm gebraucht wird. Wo du den Header einbindest, sind diese Klassendefinitionen natürlich bekannt.



  • danke das hat schonmal einen teil an zwifel genommen aber zu der genaueren Beschreibung:

    ich hab zwei buttons und eine lcd

    wenn ich jetz den einen
    z.B.
    mit

    void Widget::on_button_clicked()
    {
        lcdNumber->display(20);
    }
    

    connecte dann sagt er

    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'../qt/include/QtCore' -I'../qt/include/QtGui' -I'../qt/include' -I'../qt/include/ActiveQt' -I'debug' -I'.' -I'../untitled' -I'.' -I'../qt/mkspecs/win32-g++' -o debug/main.o ../untitled/main.cpp

    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'../qt/include/QtCore' -I'../qt/include/QtGui' -I'../qt/include' -I'../qt/include/ActiveQt' -I'debug' -I'.' -I'../untitled' -I'.' -I'../qt/mkspecs/win32-g++' -o debug/widget.o ../untitled/widget.cpp

    ../untitled/widget.cpp: In member function 'void Widget::on_up_clicked()':

    ../untitled/widget.cpp:20: error: 'lcdNumber' was not declared in this scope

    mingw32-make[1]: Leaving directory `...untitled-build-desktop'

    mingw32-make: Leaving directory `.../untitled-build-desktop'

    mingw32-make[1]: *** [debug/widget.o] Error 1

    mingw32-make: *** [debug] Error 2

    Der Prozess ".../bin/mingw32-make.exe" wurde mit dem Rückgabewert %2 beendet.
    Fehler beim Erstellen des Projekts untitled(Ziel: Desktop)
    Bei der Ausführung von Build-Schritt 'Make'

    ..............................................................................

    nun ok dann declare ich eben und mach ne vorärtsdeklaration in der header mit:
    QLCDNumber *lcdNumber;

    dann beendet er das stürzt das programm ab und meldet:

    ..............................................................

    Starte ...\untitled-build-desktop\debug\untitled.exe...
    ...\untitled-build-desktop\debug\untitled.exe beendet, Rückgabewert -1073741819

    ?????
    hmm
    ?????
    vielden dank nochma für die schnelle antwort



  • Doku nochmal lesen. Wie bindest du das ui ein? ui als Member? Dann hast du keinen "lcdNumber" sondern einen "ui->lcdMember". Dein Zugriff würde für den "private Inheritance Approach" passen.

    Wenn du nicht selber weiterkommst (versuch es bitte erst mit der Doku, das bringt dir deutlich mehr!) dann kannst du auch den Code deiner Klassendefinition posten.

    // edit:
    Hier ist der direkte Link zur Doku, wie du die ui-files in deiner eigenen Applikation verwendest:
    http://doc.qt.nokia.com/latest/designer-using-a-ui-file.html



  • ok vielen dank ma
    melde mich wenn ich weiter bin



  • ach wie bescheuert vielen vielen dank
    ui->


Anmelden zum Antworten