[SOLVED] QWidget: Must construct a QApp before a QWidget
Verfasst: 26. März 2014 14:56
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:
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/
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 QWidgetWenn 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);
}