PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QT & MDI Windows



TheDodger
25-06-2002, 06:44
Ich habe da mal eine - etwas kniffligere - Frage zu den MDI Windows von QT(3).

Ich programmiere hier in der Firma unter QT3 / Windows eine DB Anwedungung, welche im Moment als MDI ausgelegt ist, da wir noch kein API für eine Plugin Schnittstelle erzeugt haben (vielleicht kommt das ja noch mal ...)

Im Hauptfenster gibt es eineige Standard Actions wie Neu | Editieren | Löschen | Abbruch | Speichern zur Verfügung.
Soweit so gut.
Aber nicht alle MDI-Kinder dürfen z.B. die Lösch-Funktion aufrufen.

Da ich aber die MDI-Kinder mit dem QWorkSpace als parent erzeuge, habe ich keine Möglcihkeit auf die Actions im MDI-Vater zugreifen zu können?
Oder gibt es da eine Möglichkeit, die ich mal wieder nicht sehe?

anda_skoa
25-06-2002, 07:03
Hmm, wenn der parent des QWorkspace das QMainWindows ist, müßte es aus den Child windows doch gehe, auf das QMainWindow zu kommen:



// im child
QWidget* workspace = parent();
QMainWindow* mainWindow = static_cast<QMainWindow*>(workspace->parent());


Btw, falls die KDockWindow Sachen gefallen, gibt es das soweit ich weiß auch in pure Qt.
QextMDI ist der Usprung con KDock*
http://www.geocities.com/gigafalk/qextmdi.htm


Ciao,
_

TheDodger
25-06-2002, 11:34
Original geschrieben von anda_skoa
Hmm, wenn der parent des QWorkspace das QMainWindows ist, müßte es aus den Child windows doch gehe, auf das QMainWindow zu kommen:



// im child
QWidget* workspace = parent();
QMainWindow* mainWindow = static_cast<QMainWindow*>(workspace->parent());


I'm in testing mode ... :)



Btw, falls die KDockWindow Sachen gefallen, gibt es das soweit ich weiß auch in pure Qt.
QextMDI ist der Usprung con KDock*
http://www.geocities.com/gigafalk/qextmdi.htm

ja, QextMDI ist bekannt ... und scheint auch nicht sehr schlecht zu sein ... allerdings mussten wir uns dagegen entscheiden ... ist halt Firma ...

B.

TheDodger
25-06-2002, 13:01
// im child
QObject* ws = parent();

uiStamm* mainWindow = static_cast<uiStamm*>( ws->parent() );

mainWindow->actNewRecord->setEnabled( false );


QWidget ging irgendwie nicht :)

uiStamm ist mein vom Designer erzeugtes ui File, in welchem alle Actions definiert sind.
Wenn ich dann bei mainWindow->actNewRecord->setEnabled() darauf zugreifen will, bekommen ich einen Fehler.

Die Action ist public, also darf ich wohl darauf zugreifen ...
Ich denke mal es liegt daran, daß von uiStamm noch eine Klasse ableite und in der erzeuge ich dann die Child Fenster ...

TheDodger
25-06-2002, 13:15
dann probiert man es eben mit parent()->parent()

so, klappt ;)))