Seite 1 von 1

[SOLVED] QWidget: Must construct a QApp before a QWidget

Verfasst: 26. März 2014 14:56
von Jojo1704
Hallo,

Ich arbeite an einem Projekt mit Qt 5.2.1. und VTK 6.1.

Für die Visualisierung versuche ich einen MeshWrapper zu implementieren, welcher mehrere QVTKWidgets als Mdi Fenster erzeugt.

When ich versuche ein neues Mdi Fenster aus der MeshWrapper Klasse heraus zu instanziieren bekomme ich folgenden Fehler:

Code: Alles auswählen

QWidget: Must construct a QApplication before a QWidget
Danach stoppt das Programm.

Wenn ich das Mdi child direkt aus dem mainwindow heraus instanziiere, dann funktioniert es ohne Probleme.
Außerdem wird das Mdi child erst lange nach QApplication instanziiert

Kann mir irgendwer helfen?

Vielen Dank!

PS: Ich habe breits aus qt-project.org/forums einen Thread dazu eröffnet, jedoch bis jetzt ohne eine Lösung.
https://qt-project.org/forums/viewthread/40240/

Code: Alles auswählen

class MeshWrapper : public QObject
{
    Q_OBJECT
public:
    MeshWrapper();
 
    bool loadFile(const QString &fileName);
    bool createMeshes(QMdiArea *mdiArea);
 
signals:
 
public slots:
 
private:
    vtkSmartPointer<vtkPolyData> polyData[2];
};
bool MeshWrapper::createMeshes(QMdiArea *mdiArea) {
    mdiVTKChild *mesh1 = new mdiVTKChild();
    mesh1->render();
 
    mdiArea->addSubWindow(mesh1);
    mesh1->show();
 
    return true;
}
class mdiVTKChild : public QVTKWidget
{
    Q_OBJECT
public:
    mdiVTKChild();
    mdiVTKChild(vtkSmartPointer<vtkPolyData> _polyData);
 
    bool loadFile(const QString &fileName);
    bool render();
 
signals:
 
public slots:
 
private:
    vtkSmartPointer<vtkPolyData> polyData;
};
void MainWindow::on_actionRead_Liver_triggered()
{
    QString filename = QFileDialog::getOpenFileName(this,tr("Open File"), "C:/", tr("(*.txt)"));
 
    MeshWrapper *meshWrapper = new MeshWrapper();
    meshWrapper->loadFile(filename);
    meshWrapper->createMeshes(ui->mdiArea);
}

Re: QWidget: Must construct a QApplication before a QWidget

Verfasst: 27. März 2014 23:04
von Jojo1704
Ich habe eine Lösung gefunden und sie auf qt-project/forums gepostet. Zu finden ist sie hier:

http://qt-project.org/forums/viewthread/40240/