KindFenster aus einem QMainWindow heraus öffnen
Verfasst: 14. Mai 2009 21:42
Ich möchte ein Kindfenster, dachte hierfür an ein QWidget, aus dem Hauptfenster (QMainWindow) heraus öffnen. In diesem Fenster möchte ich später ein Formular zum Erstellen von Fragen anzeigen lassen.
Leider kann ich mit den Fehlermeldungen des Compilers nicht viel anfangen:
Über eure Hilfe würde ich mich sehr freuen!
Nachfolgend der Code:
main.cpp
mainwindow.cpp
mainwindow.h
QuestionWidget.cpp
QuestionWidget.h
Leider kann ich mit den Fehlermeldungen des Compilers nicht viel anfangen:
Code: Alles auswählen
MultipleChoiceCreator/debug/moc_mainwindow.o:-1: error: In function `ZN10MainWindow18openQuestionWidgetEv':
MultipleChoiceCreator/debug/moc_mainwindow.cpp:76: multiple definition of `MainWindow::openQuestionWidget()'
:-1: error: collect2: ld returned 1 exit statusNachfolgend der Code:
main.cpp
Code: Alles auswählen
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}Code: Alles auswählen
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
// Menü
QMenu *fileMenu = new QMenu(tr("&Datei"), this);
menuBar()->addMenu(fileMenu);
fileMenu->addAction(
QIcon("./images/cancel.png"),
tr("Neue Frage..."), this, SLOT(openQuestionWidget()),
QKeySequence(tr("Ctrl+N", "Datei|Neue Frage")));
fileMenu->addAction(
QIcon("./images/cancel.png"),
tr("Beenden..."), this, SLOT(close()),
QKeySequence(tr("Ctrl+X", "Datei|Beenden")));
// Widget
}
MainWindow::~MainWindow() {}
void MainWindow::openQuestionWidget() {
QuestionWidget* qW = new QuestionWidget(this);
qW->show();
}
void MainWindow::closeEvent(QCloseEvent *event) {
int ret = QMessageBox::warning(this, tr("Abfrage"), tr("Wollen Sie die Anwendung beenden?"),
QMessageBox::Ok | QMessageBox::Cancel);
if(ret == QMessageBox::Ok) {
event->accept();
} else {
event->ignore();
}
}Code: Alles auswählen
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
#include <QtCore>
#include "QuestionWidget.h"
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void closeEvent(QCloseEvent* event);
signals:
void openQuestionWidget();
};
#endif // MAINWINDOW_H
Code: Alles auswählen
#include "QuestionWidget.h"
QuestionWidget::QuestionWidget(QWidget *parent) : QWidget(parent) {
button0 = new QPushButton("Fenster schliessen...");
layout = new QGridLayout(this);
layout->addWidget(button0, 0, 0);
setLayout(layout);
}
QuestionWidget::~QuestionWidget() {}Code: Alles auswählen
#ifndef QUESTIONWIDGET_H
#define QUESTIONWIDGET_H
#include <QtGui>
#include <QtCore>
class QuestionWidget : public QWidget {
Q_OBJECT
public:
QuestionWidget(QWidget *parent = 0);
~QuestionWidget();
private:
QGridLayout* layout;
QPushButton* button0;
};
#endif // QUESTIONWIDGET_H