entwickle gerade ein Programm in PyQt4. Und zwar soll es eine Mdi Anwendung sein. Leider komme ich mit QSignalMapper nicht zurecht.
Ich werde versuchen das Problem in reinem Qt4 darzustellen.
Ich habe also ein Hauptfenster,
Code: Alles auswählen
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
...
class QAction;
class QMenu;
class QMdiArea;
class QMdiSubWindow;
class MdiChild;
class QSignalMapper;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
protected:
void closeEvent(QCloseEvent *event);
private slots:
...
void updateMenus();
void updateWindowMenu();
MdiChild *createMdiChild();
...
void setActiveSubWindow(QWidget *window);
private:
void readSettings();
void writeSettings();
QMdiArea *mdiArea;
QSignalMapper *windowMapper;
...
};
#endif
Code: Alles auswählen
#include <QtGui>
#include "mainwindow.h"
#include "mdichild.h"
MainWindow::MainWindow()
{
mdiArea = new QMdiArea;
setCentralWidget(mdiArea);
connect(mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow *)),
this, SLOT(updateMenus()));
windowMapper = new QSignalMapper(this);
connect(windowMapper, SIGNAL(mapped(QWidget *)),
this, SLOT(setActiveSubWindow(QWidget *)));
createActions();
createMenus();
createToolBars();
createStatusBar();
updateMenus();
readSettings();
setWindowTitle(tr("MDI"));
}
MdiChild *MainWindow::createMdiChild()
{
MdiChild *child = new MdiChild;
mdiArea->addSubWindow(child);
connect(child, SIGNAL(copyAvailable(bool)),
cutAct, SLOT(setEnabled(bool)));
connect(child, SIGNAL(copyAvailable(bool)),
copyAct, SLOT(setEnabled(bool)));
return child;
}
void MainWindow::readSettings()
{
QSettings settings("Trolltech", "MDI Example");
QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
QSize size = settings.value("size", QSize(400, 400)).toSize();
move(pos);
resize(size);
}
void MainWindow::writeSettings()
{
QSettings settings("Trolltech", "MDI Example");
settings.setValue("pos", pos());
settings.setValue("size", size());
}
...
return 0;
}
Code: Alles auswählen
#ifndef MDICHILD_H
#define MDICHILD_H
#include <QTextEdit>
class MdiChild : public QTextEdit
{
Q_OBJECT
public:
MdiChild();
...
protected:
void closeEvent(QCloseEvent *event);
private slots:
void documentWasModified();
private:
void readSettings();
void writeSettings();
...
};
#endif
Code: Alles auswählen
#include <QtGui>
#include "mdichild.h"
MdiChild::MdiChild()
{
setAttribute(Qt::WA_DeleteOnClose);
isUntitled = true;
MdiChild::readSettings()
}
...
void MdiChild::readSettings()
{
QSettings settings("Trolltech", "MDI Example");
QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
QSize size = settings.value("size", QSize(400, 400)).toSize();
move(pos);
resize(size);
}
void MdiChild::writeSettings()
{
QSettings settings("Trolltech", "MDI Example");
settings.setValue("pos", pos());
settings.setValue("size", size());
}
...
1.) Wie mache ich das?
2.) Welches SIGNAL wird gesendet beim schließen eines Fensters?
3.)Kann man über einen Debugger diese SIGNAL's abfangen, um raußzukriegen welches SIGNAL gesendet wurde?
Danke im vorrauß
Grüße Markus