Seite 1 von 1

fertig programmiertes Widget in anderes Widget einbinden?

Verfasst: 27. April 2009 22:08
von nico
Hallo,

ich benutze den Qt-Creator und habe damit erfolgreich ein Tagebuch programmiert.

Code: Alles auswählen

class Tagebuch : public QWidget, private Ui::TagebuchClass
Nun möchte ich das in eine andere Anwendung einbinden, aber nicht mittels des Qt-Designers, weil an der Stelle je nach Button-Klick auch andere Anwendungen erscheinen sollen.

Daher wollte ich das Tagebuch nun in ein Widget einfügen:

Code: Alles auswählen

void Suite::on_buttonTagebuch_clicked()
{
    Tagebuch *tb;
    widget->layout()->addWidget(tb);
}
Ich habe im Projektordner einen neuen Ordner "Tagebuch" erstellt und die Dateien "tagebuch.cpp", "tagebuch.h", "tagebuch.ui" und "ui_tagebuch.h" da rein kopiert.
Den HeaderFile habe ich eingebunden:

Code: Alles auswählen

#include "Tagebuch/tagebuch.h"
Beim Kompilieren gibt es keine Warnungen oder Fehler.

Die Anwedung schließt aber, sobald ich den Button anklicke.

Der Application Output:
Starting D:/workspace/Suite/debug/Suite.exe...
Error - RtlWerpReportException failed with status code :-1073741772. Will try to launch the process directly

D:/workspace/Suite/debug/Suite.exe exited with code -1073741819
Im Debugmodus bleibt das Programm in der Datei "qlayout.h" in folgender Zeile hängen:

Code: Alles auswählen

Q_DECLARE_PRIVATE(QLayout)
Ich habe leider keine Lösung gefunden. Die Suche nach dem Einbinden von eigenen QWidgets, brachte mich in der Dokumentation nur zur Lösung mittels Qt-Designer, aber da weiß ich dann nicht, wie ich das mit den Buttons realisieren kann, um verschiedene Anwendungen anzuzeigen.

Ich bin für jede Hilfe dankbar - auch die richtigen Suchworte würden mich freuen.

Vielen Dank schonmal,
nico

Verfasst: 27. April 2009 22:12
von solarix
C++ Grundlagen...

Code: Alles auswählen

Tagebuch *tb;
widget->layout()->addWidget(tb); 
"tb" ist ein Zeiger auf eine Instanz des Typs "Tagebuch"... nur leider existiert diese Instanz bei "addWidget(tb)" noch nicht (der Zeiger zeigt auf einen zufälligen Speicherbereich)... wie wär's also, vorher eine zu erstellen..?

Verfasst: 27. April 2009 22:30
von nico
Danke für Antwort.

Ja, mir fehlen die Grundlagen... :cry:
Eine Instanz erstelle ich doch so, oder:

Code: Alles auswählen

Tagebuch *tb = new Tagebuch();
E: Das gleiche Problem wie vorher. Ist das doch falsch instanziert?

E2: Problem gelöst, indem ich mein Widget nicht zu einem Widget, sondern zu einem Layout hinzufüge. Danke für deine Hilfe.