QWidget: Must construct a QApplication before a QPaintDevice
-
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 mehrfunktioniert 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 BeitragGruß 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ß,