00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __QMDI_H__
00019 #define __QMDI_H__
00020
00021 #include <qmainwindow.h>
00022 #include <qdockwindow.h>
00023 #include <qtabwidget.h>
00024 #include <qlayout.h>
00025 #include <qpopupmenu.h>
00026 #include <qptrlist.h>
00027
00028 typedef QPtrList<QWidget> WidgetList;
00029
00030 class MDITabWidget : public QTabWidget
00031 {
00032 Q_OBJECT
00033 public:
00034 MDITabWidget(QWidget *parent=0, const char *name=0);
00035 void addWindow( QWidget *view );
00036 void closeWindow( QWidget *view );
00037 };
00038
00039 class DockWindow : public QDockWindow
00040 {
00041 Q_OBJECT
00042 public:
00043 DockWindow( QWidget *parent=0, const char *name=0 );
00044 void addWidget( QWidget *widget, QString name );
00045 void showWidget( QWidget *widget );
00046 private:
00047 QTabWidget *tabWidget;
00048 };
00049
00050 class MainWindow : public QMainWindow
00051 {
00052 Q_OBJECT
00053 public:
00054 MainWindow(QWidget *parent=0, const char *name=0);
00055 QWidget *activeWindow();
00056 WidgetList windows();
00057 QPopupMenu *windowMenu();
00058 int windowsCount();
00059 public slots:
00060 virtual void newWindow() = 0;
00061 void closeWindow( QWidget *view );
00062 void addWindow( QWidget *view );
00063 void closeAllWindows();
00064 void closeActiveWindow();
00065 void nextWindow();
00066 void prevWindow();
00067 void activateWindow(QWidget *);
00068 void setTabCaption(QWidget *view, QString name);
00069 protected slots:
00070 void updateWindowMenu();
00071 signals:
00072 void lastWindowClosed();
00073 void windowChanged(QWidget *);
00074 private:
00075 DockWindow *dockLeft, *dockBottom;
00076 MDITabWidget *mdiTabWidget;
00077 WidgetList widgetList;
00078 QPopupMenu *__windowMenu;
00079 };
00080
00081 #endif