QWidget: Must construct a QApplication before a QPaintDevice



  • hab nun alle opengl Beispiele von der QT 4.4.3 ausprobiert
    bei jedem kommt die Meldung
    bei
    QApplication app(argc, argv, QApplication::GuiClient);
    öffnet sich auch ein Dos Fenster und der Meldung ???

    Gruß Matthias



  • Die Fehlermeldung passiert innerhalb von Qt an dieser Stelle:

    void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f)
    {
        if (qApp->type() == QApplication::Tty)
            qFatal("QWidget: Cannot create a QWidget when no GUI is being used");
    

    vgl: QApplication::Type

    Da Du den Applikationstyp nun explizit angegeben hast, ist Deine Qt vermutlich falsch uebersetzt worden.
    (Benutzt Du die Open-Source oder die kommerzielle Version?)



  • also ich habe die opensource und mit dem VS Studio 2008 kompiliert
    in der Kommandozeile

    ist ganz normal durchgelaufen

    eine GUI geht auch

    nur keine GUI + opengl

    gruß Matthias



  • Woher soll Qt 3.11 wissen, wo die Mainloop (WNDPROC) liegt? Es fehlt also die Verbindung zwischen Deiner (app)lication und Deinem Widget.

    Versuch mal, die Anweisung

    app.setMainWidget(&MyMainWidget);

    in Deinen Code einzufügen.

    Vom Laptop abgeschrieben, schreibfaul und deshalb ohne Gewähr:

    //----------------------------

    #include "Something.h" //!< defines something like something

    int main(int argc...
    {
    QApplication(argc,...);

    (class) CSomething Something(0,"MyName",true,Qt::WStyleCustomize|aFlag|moreFlags);

    app.setMainWidget(&Something);

    app.exec();

    return 0;

    }

    "(class) CSomething" bedeutet sowas wie xyz_Dialog.

    Ansonsten hilft ja die Dokuseite von Trolltech (Nokia) weiter.

    Gruß

    Larsα



  • naja... hab doch geschrieben dass ich die QT Version 4.4.3 habe
    da gibt es sowas wie app.setMainWidget nicht mehr

    funktioniert noch ned hat das schon mal jemand geschafft?

    Gruß Matthias



  • hat das schon mal jemand geschafft?

    Ja.
    Hier gibt's eine Schritt-fuer-Schritt-Anleitung.



  • ja klar kenn ich nach dem hab ichs auch gemacht
    hab es gestern nacht erneut gemacht geht wieder ned ...

    gruß matze



  • in main:

    Something w;
    w.show();

    in Something.cpp

    Something::Something()
    {
    ui.setupUi(this);
    ...
    }

    Gruß



  • Hi an alle,

    einfach die Zeilen

    QT_BEGIN_NAMESPACE

    und

    QT_END_NAMESPACE

    auskommentieren (in allem Header-Files).

    Greetz



  • hab das auch gemacht im compilierten QT alle

    QT_BEGIN_NAMESPACE und QT_END_NAMESPACE

    gelöscht bringt immer noch nichts

    oder muss ich das gesamte qt neu kompilieren???

    Gruß Matthias



  • Zunaechst muss ich darauf hinweisen dass ich normalerweise die kommerzielle Version von Qt4 und Visual Studio 2005 benutze.
    Ich habe also die Open-Source-Edition von Qt 4.4.3 geladen und im Visual Studio Command Prompt per configure & nmake kompiliert.
    Daraufhin habe ich das OpenGL-Beispiel im Verzeichnis examples\opengl\hellogl (war schon kompiliert, darum vorher mit "nmake clean" aufgeraeumt) ebenfalls im Command-Prompt (um die Visual-Studio-Integration der kommerziellen Version zu umgehen) kompiliert:
    - qmake (erzeugt Makefile aus der beiliegendem .pro-Datei)
    - nmake
    Das Beispiel laeuft fehlerfrei. 😕

    Erzaehlt Dir denn "configure" sowas in der Art?

    QMAKESPEC...................win32-msvc2005 (detected)
    Architecture................windows
    Maketool....................nmake
    Debug symbols...............yes
    Accessibility support.......yes
    STL support.................yes
    Exception support...........yes
    RTTI support................yes
    MMX support.................yes
    3DNOW support...............yes
    SSE support.................yes
    SSE2 support................yes
    IWMMXT support..............no
    OpenGL support..............yes
    Direct3D support............no
    OpenSSL support.............no
    QtDBus support..............no
    QtXmlPatterns support.......yes
    Phonon support..............no
    WebKit support..............yes
    Qt3 compatibility...........yes



  • Hallo,

    nun funktioniert es

    ich habe alle

    QT_BEGIN_NAMESPACE

    und

    QT_END_NAMESPACE

    gelöscht und neu kompiliert nun klappt es
    vielen vielen Dank! für den nützlichen Beitrag

    Gruß Matthias A



  • Hi,

    ich greife diesen alten Thread mal auf weil ich das eingangs angesprochene Problem auch habe - Ich frage mich nur was das auskommentieren des Qt namespace bringt, kann das jemand erklären?

    Gruß,



  • in keinen der QT-Beispiele wird besagtes Makro verwendet... das findet sich nur in den QT-eigenen Dateien (wo man nichts rumbasteln sollte, wenn man nicht weiß, was man tut).

    Wie kommt ihr also drauf, dass bei euch zu verwenden?

    Auch das Beispiel des OP steht so weder im assistant, noch im Quellcode...



  • Genau darum frage ich.



  • apoc333 schrieb:

    Genau darum frage ich.

    warum?

    du fragst, weil man es nicht verwenden soll?

    Dazu müsstest du erstmal verraten, warum du es verwendest...



  • Leider verstehe ich Deine Rückfragen nicht, weil:

    a) Ich geschrieben habe, dass ich das gleiche Problem habe wie zu Beginn des Threaeds erwähnt habe (=QApplication wird erzeugt und ein danach erzeugtes Widget "findet" diese nicht und ich verwende Qt 4.4.3)
    b) Ich genau nicht pauschal solche Eingriffe im Qt Source durchführen möchte wie es hier angeraten wurde, sondern darum
    c) gefragt habe, was das bewirken soll - damit ich Rückschlüsse ziehen kann, wo das Problem in meinem Source liegt.

    Gruß,


Anmelden zum Antworten