[Gelöst].show(); Erzeugt kein neues Fenster.

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
ycronoy
Beiträge: 34
Registriert: 19. Oktober 2012 00:58

[Gelöst].show(); Erzeugt kein neues Fenster.

Beitrag von ycronoy »

Hallo Leute,

Ich werde gerade verrückt.... egal was ich mache es kommt einfach kein Fenster.
Ich habe mich verucht einzulesen aber nichts gefunden... Kann jemand mir bitte helfen und mir sagen wo der Fehler ist?

Ziel der Übung ist einfach das neue angeforderte Fersten zu öffnen.

Code: Alles auswählen

void MainWindow::on_actionEditor_triggered()
{
Main_Editor mDialog;
mDialog.setWindowFlags( Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint );
mDialog.setWindowTitle("TEST");
mDialog.show();
}

Code: Alles auswählen

#ifndef MAIN_EDITOR_H
#define MAIN_EDITOR_H

#include <QTabWidget>

namespace Ui {
class Main_Editor;
}

class Main_Editor : public QTabWidget
{
    Q_OBJECT
    
public:
    explicit Main_Editor(QWidget *parent = 0);
    ~Main_Editor();
    
private:
    Ui::Main_Editor *ui;
};

#endif // MAIN_EDITOR_H

Code: Alles auswählen

#include "main_editor.h"
#include "ui_main_editor.h"

Main_Editor::Main_Editor(QWidget *parent) :
    QTabWidget(parent),
    ui(new Ui::Main_Editor)
{
    ui->setupUi(this);
}

Main_Editor::~Main_Editor()
{
    delete ui;
}
PS: Die "ui_main_editor.h" existiert.

Vielen Dank,
ycronoy
Zuletzt geändert von ycronoy am 12. März 2013 12:49, insgesamt 1-mal geändert.
veeman
Beiträge: 277
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: .show(); Erzeugt kein neues Fenster.

Beitrag von veeman »

Das liegt daran das du dein Fenster in der Funktion nur lokal definierst, sobald die Funktion verlassen wird gibt es das Fenster nicht mehr.

Mfg veeman
ycronoy
Beiträge: 34
Registriert: 19. Oktober 2012 00:58

Re: .show(); Erzeugt kein neues Fenster.

Beitrag von ycronoy »

veeman hat geschrieben:Das liegt daran das du dein Fenster in der Funktion nur lokal definierst, sobald die Funktion verlassen wird gibt es das Fenster nicht mehr.

Mfg veeman
Wie kann ich das lösen. Ich versteh schon das Problem, aber ich habe leider keine Ahnung wie ich dieses löse. Würde mich über eine Hilfestellung freuen.

Danke,
ycronoy
Zuletzt geändert von ycronoy am 11. März 2013 00:29, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: .show(); Erzeugt kein neues Fenster.

Beitrag von Christian81 »

Das Objekt nicht auf den Stack sondern auf den Heap anlegen -> C++ Grundlagen
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
ycronoy
Beiträge: 34
Registriert: 19. Oktober 2012 00:58

Re: .show(); Erzeugt kein neues Fenster.

Beitrag von ycronoy »

Christian81 hat geschrieben:Das Objekt nicht auf den Stack sondern auf den Heap anlegen -> C++ Grundlagen
Leider klappt das irgendwie nicht.

Also bei einem "QDialog" geht das zum bei spiel so ein fersten zu öffnen:

Code: Alles auswählen

Option mDialog;
mDialog.setWindowFlags( Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint );
mDialog.setWindowTitle("Option / settings");
mDialog.setModal(true);
mDialog.exec();
Beim "QTabWidget" scheint es so als wehre das mit .setModa und .exec() nicht möglich. Was ich im Internet nur fand das sind alles nur Möglichkeiten mit .show().

Ich bin blutiger Anfänger und ich versuche es mir selber bei zu bringen. Deswegen ist das nicht immer ganz einfach alles zu versehn.

Bitte nicht mit steinen werfen.

Danke,
ycronoy
veeman
Beiträge: 277
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: .show(); Erzeugt kein neues Fenster.

Beitrag von veeman »

Du hast die Möglichkeit die Variable als Membervariable deines Hauptfensters zu definieren, dann kannst du innerhalb dieses immer drauf zugreifen.

Und/oder, was Christian meinte, das ganze per new auf den Heap legen und mit Pointer arbeiten.

Code: Alles auswählen

Main_Editor *mDialog = new Main_Editor(this);
...
mDialog->show();
Mfg veeman
ycronoy
Beiträge: 34
Registriert: 19. Oktober 2012 00:58

Re: .show(); Erzeugt kein neues Fenster.

Beitrag von ycronoy »

veeman hat geschrieben:Du hast die Möglichkeit die Variable als Membervariable deines Hauptfensters zu definieren, dann kannst du innerhalb dieses immer drauf zugreifen.

Und/oder, was Christian meinte, das ganze per new auf den Heap legen und mit Pointer arbeiten.

Code: Alles auswählen

Main_Editor *mDialog = new Main_Editor(this);
...
mDialog->show();
Mfg veeman
Danke dafür jetzt versteh ich was ihr meintet. Wenn ich das genau so mache öffnet sich mein Fenster aber innerhalb meinem ersten Fensters.
Oder besser gesagt es wird überlappt. Ich wollte eigentlich ein neues Fenster erstellen. Wo ist denn jetzt der Fehler?

Danke Leute, ich hätte das alleine wohl nie geschafft.

ycronoy
veeman
Beiträge: 277
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: .show(); Erzeugt kein neues Fenster.

Beitrag von veeman »

Entweder du gibst als Parent nicht this an und/oder du musst bei den Flags noch etwas angeben (vl. Qt::Window).

Mfg Rushh0ur
ycronoy
Beiträge: 34
Registriert: 19. Oktober 2012 00:58

Re: .show(); Erzeugt kein neues Fenster.

Beitrag von ycronoy »

veeman hat geschrieben:Entweder du gibst als Parent nicht this an und/oder du musst bei den Flags noch etwas angeben (vl. Qt::Window).

Mfg Rushh0ur
Vielen vielen Dank, jetzt klappt das entlich so wie ich mir das vorgestellt habe. Danke nochmal.

Danke,
Alexej
Antworten