Einstellungen-Fenster
Einstellungen-Fenster
Guten Tag,
ich hab ein Problem, das sich wahrscheinlich recht einfach lösen lässt - wenn man das richtige Stichwort weiß.
Unter qt 4.5 (linux) möchte ich aus einer Anwendung (QMainWindow) ein zweites Fenster öffnen. Das Fenster soll eine Art Einstellungenfenster sein. Eine längere Suche sowohl hier als über google brachte mich nicht zu einem gewünschten (und vor allem funktionierendem) Ergebnis. Ich vermute, dass mir einfach das richtige Stichwort zum Suchen fehlt...
Ich wäre echt dankbar, wenn mir jemand weiterhelfen könnte.
Viele Grüße
listeman
ich hab ein Problem, das sich wahrscheinlich recht einfach lösen lässt - wenn man das richtige Stichwort weiß.
Unter qt 4.5 (linux) möchte ich aus einer Anwendung (QMainWindow) ein zweites Fenster öffnen. Das Fenster soll eine Art Einstellungenfenster sein. Eine längere Suche sowohl hier als über google brachte mich nicht zu einem gewünschten (und vor allem funktionierendem) Ergebnis. Ich vermute, dass mir einfach das richtige Stichwort zum Suchen fehlt...
Ich wäre echt dankbar, wenn mir jemand weiterhelfen könnte.
Viele Grüße
listeman
Danke für eure Antworten!
Bin in den Beispielen von Trolltech auf ein Beispiel gestoßen, in dem ein recht ähnliches Problem mit QDialog gelöst wurde.
Allerdings hab ich es nicht geschafft, das an meine Bedürfnisse anzupassen.
Ich poste mal die wichtigen Teile meiner Dateien:
einstellungen.h
einstellungen.cpp
mainwindow.cpp
Er bringt dabei keine Kompilierfehler, aber wenn ich im Menu auf Einstellungen klicke passiert nichts sichtbares. Wenn ich jedoch in der "einstellungen.cpp" eine QMessageBox hinzufüge, dann öffnet die sich bei Klick auf Einstellungen. Das Programm kommt also dorthin, nur funktioniert das mit dem Anzeigen irgendwie nicht...[/code]
Bin in den Beispielen von Trolltech auf ein Beispiel gestoßen, in dem ein recht ähnliches Problem mit QDialog gelöst wurde.
Allerdings hab ich es nicht geschafft, das an meine Bedürfnisse anzupassen.
Ich poste mal die wichtigen Teile meiner Dateien:
einstellungen.h
Code: Alles auswählen
#ifndef EINSTELLUNGEN_H
#define EINSTELLUNGEN_H
#include <QtGui/QDialog>
#include <QWidget>
#include <QVBoxLayout>
#include <QLabel>
class Einstellungen : public QDialog {
Q_OBJECT
public:
Einstellungen(QWidget*);
};
#endif // EINSTELLUNGEN_Heinstellungen.cpp
Code: Alles auswählen
#include "einstellungen.h"
Einstellungen::Einstellungen(QWidget *parent) : QDialog(parent) {
QVBoxLayout *main = new QVBoxLayout;
QLabel *hallo = new QLabel("Hallo");
main->addWidget(hallo);
setLayout(main);
}mainwindow.cpp
Code: Alles auswählen
...
#include "einstellungen.h"
...
connect(ui->action_Einstellungen, SIGNAL(triggered()), this, SLOT(einstellen()));
...
void MainWindow::einstellen() {
Einstellungen(this).show();
}
Er bringt dabei keine Kompilierfehler, aber wenn ich im Menu auf Einstellungen klicke passiert nichts sichtbares. Wenn ich jedoch in der "einstellungen.cpp" eine QMessageBox hinzufüge, dann öffnet die sich bei Klick auf Einstellungen. Das Programm kommt also dorthin, nur funktioniert das mit dem Anzeigen irgendwie nicht...[/code]
Okay, ich hab es jetzt ein wenig geändert.
In der einstellungen.cpp binde ich jetzt eine weitere ui-Datei mit dem Layout ein. Meine einstellungen.cpp sieht jetzt so aus:
einstellungen.cpp:
Jetzt sehe ich das Fenster für den Bruchteil einer Sekunde aufblitzen. Wenn ich die Zeile mit der QMessageBox entkommentiere, dann bleibt das Fenster hinter der MessageBox erhalten. Sobald ich aber OK drücke verschwindet sowohl das Nachrichtenfenster als auch das Einstellungenfenster, aber warum?
In der einstellungen.cpp binde ich jetzt eine weitere ui-Datei mit dem Layout ein. Meine einstellungen.cpp sieht jetzt so aus:
einstellungen.cpp:
Code: Alles auswählen
#include "einstellungen.h"
#include "ui_einstellungen.h"
Einstellungen::Einstellungen(QWidget *parent) : QDialog(parent), ui(new Ui::Einstellungen) {
ui->setupUi(this);
this->setVisible(true);
// QMessageBox::information(this,"Abgelaufen","Dieser Code ist abgelaufen!");
}
Einstellungen::~Einstellungen() {
delete(ui);
}Jetzt sehe ich das Fenster für den Bruchteil einer Sekunde aufblitzen. Wenn ich die Zeile mit der QMessageBox entkommentiere, dann bleibt das Fenster hinter der MessageBox erhalten. Sobald ich aber OK drücke verschwindet sowohl das Nachrichtenfenster als auch das Einstellungenfenster, aber warum?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Manchmal seh ich wirklich den Wald vor lauter Bäumen nicht...
Ist doch eigentlich ganz einfach und logisch, dass eine Instanz, die in einer Funktion initialisiert wird nur temporär innerhalb der Funktion vorhanden ist... die ganze Sache ließ sich ganz einfach lösen:
mainwindow.h
mainwindow.cpp:
einstellungen.cpp:
Und nun funktioniert es...
Danke an alle, die mir hier geholfen haben!!!
Ist doch eigentlich ganz einfach und logisch, dass eine Instanz, die in einer Funktion initialisiert wird nur temporär innerhalb der Funktion vorhanden ist... die ganze Sache ließ sich ganz einfach lösen:
mainwindow.h
Code: Alles auswählen
...
Einstellungen fenster;
...Code: Alles auswählen
...
void MainWindow::einstellen() {
fenster.zeige();
}
...
Code: Alles auswählen
void Einstellungen::zeige() {
this->setVisible(true);
}Danke an alle, die mir hier geholfen haben!!!