Konstruieren einer QApplication

-H-T-P-

Mitglied
Hallo,
kenne mich leider nicht so gut mit C++ aus und habe somit ein wahrscheinlich einfach zu lösendes Problem.

Was ich machen will:
Die Klasse "MainWindow" in verschiedenen Funktionen verwenden.


Folgendes Beispiel:
main.cpp
Code:
#include <QtGui/QApplication>
#include "mainwindow.h"



MainWindow w;


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    w.show();
    
    return a.exec();
}


void andereFunktion(){
    w.funktion();
}


Fehler:
QWidget: Must construct a QApplication before a QPaintDevice
Das Programm ist abgestürzt.


Der Fehler ist ja schonmal sehr aussagekräftig, aber wie genau konstruiere ich das jetzt bevor ich "MainWindow w" verwende?
 
Hallo,

ein QApplication-Objekt erzeugst du ja schon in der main()-Funktion. Wann tritt denn dieser Fehler auf bzw. in welcher Situation rufst du "andereFunktion()" auf?

Gruß
MCoder
 
Der Fehler tritt direkt nach dem Ausführen auf.
Der Compiler gibt zwar keine Zeile an, aber der Fehler tritt sicherlich bei "MainWindow w;" auf.
Den Fehler deute ich so, dass ich VOR "MainWindow w;" irgendwie QApplication konstruieren muss.

Die "andereFunktion" soll nur deutlich machen, dass ich überall ,und nicht nur in main(), "w" nutzen möchte.

Ursprünglich stand ja "MainWindow w;" unter QApplication.
 
Zuletzt bearbeitet:
Hallo,

das Problem dürfte der Code im Konstruktor von MainWindow sein. Evt. solltest du dein Programmdesign überdenken. Weitere Funktionen werden ja erst verwendet, wenn MainWindow erzeugt wurde und werden auch von dort aus angestoßen, so dass du diesen Klassen einen Zeiger auf MainWindow mitgeben kannst.

Eine andere Möglicht wäre, MainWindow als Zeiger zu deklarieren und erst in Main zu instanziieren:
C++:
MainWindow* pWin = NULL;
  
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    pWin = new MainWindow;
    pWin->show();
    
    return a.exec();
}
  
void andereFunktion(){
    
    if( pWin )
    {
        pWin->funktion();
    }
}
Gruß
MCoder
 

Neue Beiträge

Zurück