Problem: Zugriff von QDialog auf QMainWindow
Verfasst: 9. Dezember 2009 11:35
Hallo,
ich schreibe gerade an einem Programm, hierbei kommt es zum folgenden Problem
Ich habe einen Dialog, der über ein MainWindow aufgerufen wird. Dort sollen über Button Funktionen aus meinem Hauptfenster angesprochen werden.
Diesen Aufbau habe ich versuchsweise mit einem zweiten Window probiert -> da hat es funktioniert.
Aber mit dem Dialog schaffe ich nicht die Funktionen aufzurufen
Kann mir jemand sagen, was ich tun muss, dass er das MainWindow erkennt, von dem es kommt und die Funktionen aufrufen kann?
Folgender Fehler tritt auf:
In file included from testDialog.cpp:8:testDialog.h:16: error: expected `)' before '*' tokentestDialog.cpp:11: error: prototype for `testDialog::testDialog(QMainWindow*)' does not match any in class `testDialog'testDialog.h:13: error: candidates are: testDialog::testDialog()
ich schreibe gerade an einem Programm, hierbei kommt es zum folgenden Problem
Ich habe einen Dialog, der über ein MainWindow aufgerufen wird. Dort sollen über Button Funktionen aus meinem Hauptfenster angesprochen werden.
Diesen Aufbau habe ich versuchsweise mit einem zweiten Window probiert -> da hat es funktioniert.
Aber mit dem Dialog schaffe ich nicht die Funktionen aufzurufen
Kann mir jemand sagen, was ich tun muss, dass er das MainWindow erkennt, von dem es kommt und die Funktionen aufrufen kann?
Folgender Fehler tritt auf:
In file included from testDialog.cpp:8:testDialog.h:16: error: expected `)' before '*' tokentestDialog.cpp:11: error: prototype for `testDialog::testDialog(QMainWindow*)' does not match any in class `testDialog'testDialog.h:13: error: candidates are: testDialog::testDialog()
Code: Alles auswählen
mainWindow.cpp
#include "mainWindow.h"
#include <QDir>
#include <QMouseEvent>
#include <QMessageBox>
#include <QDesktopWidget>
#include <QRect>
mainWindow::mainWindow() {
widget.setupUi(this);
actionImageLoad = rightclickMenu.addAction(tr("Bilder laden"));
actionMoveRight = rightclickMenu.addAction(tr("Nach Rechts"));
actionTestDialog = rightclickMenu.addAction(tr("TestDialog"));
connect(actionImageLoad,SIGNAL(triggered()),this,SLOT(open()));
connect(actionMoveRight,SIGNAL(triggered()),this,SLOT(moveImageRight()));
connect(actionTestDialog,SIGNAL(triggered()),this,SLOT(testDialog()));
//other code
}
mainWindow::~mainWindow() {
}
void mainWindow::open() {
//code zum Laden des Bildes
}
void mainWindow::mouseReleaseEvent(QMouseEvent *event){
if(event->button() & Qt::RightButton){
rightclickMenu.popup(event->pos());
}
}
void mainWindow::moveImageRight(){
//code zum Bewegen des Bildes
}
void mainWindow::testMyDialog(){
//ruft den Dialog auf
dialog = new testDialog(this);
dialog->show();
}
Code: Alles auswählen
mainWindow.h
#ifndef _MAINWINDOW_H
#define _MAINWINDOW_H
#include "ui_mainWindow.h"
#include <QMenu>
#include <testDialog.h>
class mainWindow : public QMainWindow {
Q_OBJECT
public:
mainWindow();
virtual ~mainWindow();
void mouseReleaseEvent(QMouseEvent *event);
void moveImageRight();
private:
Ui::mainWindow widget;
QMenu rightclickMenu;
testDialog *dialog;
QAction* actionImageLoad;
QAction* actionQuit;
QAction* actionTestDialog;
QAction* actionMoveRight;
//more stuff
private slots:
void open();
void testMyDialog();
};
#endif /* _MAINWINDOW_H */
Code: Alles auswählen
testDialog.h
#ifndef _TESTDIALOG_H
#define _TESTDIALOG_H
#include "ui_testDialog.h"
class testDialog : public QDialog {
Q_OBJECT
public:
testDialog(QMainWindow *parent = 0);
virtual ~testDialog();
private:
Ui::testDialog widget;
private slots:
void moveRight();
//more stuff
};
#endif /* _TESTDIALOG_H */
Code: Alles auswählen
testDialog.cpp
#include "testDialog.h"
#include <mainWindow.h>
testDialog::testDialog(QMainWindow *parent): QMainWindow(parent) {
widget.setupUi(this);
connect(widget.actionMoveRight,SIGNAL(triggered()),this,SLOT(moveRight()));
}
testDialog::~testDialog() {
}
void testDialog::moveRight(){
dynamic_cast<mainWindow*>(this->parentWidget())->moveImageRight();
}