[Anfänger] zweites Fenster öffnen
[Anfänger] zweites Fenster öffnen
Gehen wir mal davon aus, ich richte mir im QtCreator ein neues Projekt ein: Datei->Neu->Qt-Widget-Projekt->Qt-Gui-Anwendung->... (die absolute Standard-Prozedur also)
Nun gibt es main.cpp, mainwindow.cpp / .h /.ui
Wie muss der Code ausschauen, damit ein Klick auf einem QPushButton des MainWindow sich ein weiteres (QWidget-) Fenster öffnet? Was muss public, was darf private sein?
Doofe Frage, ich weiß. Wenn ich es einmal gesehen habe, so denke ich, kapiere ich es auch.
Nun gibt es main.cpp, mainwindow.cpp / .h /.ui
Wie muss der Code ausschauen, damit ein Klick auf einem QPushButton des MainWindow sich ein weiteres (QWidget-) Fenster öffnet? Was muss public, was darf private sein?
Doofe Frage, ich weiß. Wenn ich es einmal gesehen habe, so denke ich, kapiere ich es auch.
Re: [Anfänger] zweites Fenster öffnen
qt wird mit Tausenden von Beispielen und Demos ausgeliefert, mal reinschauen - es findet sicher was passendes.
Re: [Anfänger] zweites Fenster öffnen
Hmmm... ich frage mich, ob es nicht besser ist, mir diese Frage im Forum beantworten zu lassen.
Also ich habe schon ein kleines bißchen mit Qt gemacht, da gibt es ein Textbasiertes Rollenspiel, angelehnt an das AD&D Regelwerk. Inkl. Ausgaben in ein ListWidget, Charakterdaten auslesen aus Textdateien, Savegames anlegen, Map-Dateien parsen und einiges mehr. Nur am "zweiten Fenster öffnen" komme ich nicht weiter.
Also ich habe schon ein kleines bißchen mit Qt gemacht, da gibt es ein Textbasiertes Rollenspiel, angelehnt an das AD&D Regelwerk. Inkl. Ausgaben in ein ListWidget, Charakterdaten auslesen aus Textdateien, Savegames anlegen, Map-Dateien parsen und einiges mehr. Nur am "zweiten Fenster öffnen" komme ich nicht weiter.
-
- Beiträge: 190
- Registriert: 19. August 2010 10:00
Re: [Anfänger] zweites Fenster öffnen
NeuesFenster *window = new NeuesFenster(this);
window->show();
Re: [Anfänger] zweites Fenster öffnen
Das ist nett, aber ich bin immer noch zu dummtrottelig. Bitte helft mir (noch mehr)!DBGTMaster hat geschrieben:NeuesFenster *window = new NeuesFenster(this);
window->show();
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
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void buttonclick(); //ein einfacher Button mit clicked()-Signal
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
Code: Alles auswählen
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
MainWindow::buttonclick()
{
//hier zweites Fenster öffnen, welches noch designed / aus einer noch nicht hier aufgeführten Klasse erstellt werden muss(?)
}
Re: [Anfänger] zweites Fenster öffnen
Erster Advent... Und bis Weihnachten noch 3x Advent und dann noch ein Weihnachtsgeschenk?Am liebsten kein Pseudocode, sondern was kompilierbares... einfach so, als erster-Advent-Geschenk für mich
Dein MainWindow hast du ja auch mit dem Designer hinbekommen, genauso macht du dein neues Widget. Das hat dann auch nen Header, den du in MainWindow.cpp einbinden kannst. Den nötigen Code für den SLOT hast du schon bekommen (diese 2 Zeilen).
Und als kleines "Adventszuckerl": Bisher wird gar nichts passieren, wenn du auf deinen Button drückst. Irgendwo muss da noch das SIGNAL(clicked()) des passenden Buttons auf dein buttonClicked() des MainWindow vonnected werden (QObject::connect()).
Aber eigentlich ist dein Problem eher ein C++-Problem: Wie erstelle ich ein Objekt in einer Methode. Das Objekt soll den Methodenaufruf überleben. Den Rest (Widget mit Designer erstellen, Widget anzeigen) hast du ja schon selber mal hinbekommen.
Re: [Anfänger] zweites Fenster öffnen
Wie du vom UI-Designer auf den Code von DBGTMaster kommst, steht hier: http://doc.qt.nokia.com/latest/designer ... -file.htmlthuering hat geschrieben:...DBGTMaster hat geschrieben:NeuesFenster *window = new NeuesFenster(this);
window->show();
Wie lässt sich dieses 2. Fenster auch im UI-Designer zusammenbauen und per Klick im MainWindow aufrufen?
...
Empfehlen würde ich dir einen ersten Versuch mit dem "Single Inheritance Approach".
hth!
Re: [Anfänger] zweites Fenster öffnen
Ich nutze den QtCreator, da kann ich die Signal-Slot-Bindungen per ClickiBunti machen - hab ich auch hier so gemacht. Widget erstellen und anzeigen lassen habe ich also auch "nicht selber hinbekommen", sondern der ganze Kram, den ich in meinem Quellcode-Posting habe, kommt direkt vom QtCreator (außer der buttonclick()).franzf hat geschrieben:Und als kleines "Adventszuckerl": Bisher wird gar nichts passieren, wenn du auf deinen Button drückst. Irgendwo muss da noch das SIGNAL(clicked()) des passenden Buttons auf dein buttonClicked() des MainWindow vonnected werden (QObject::connect()).
Aber eigentlich ist dein Problem eher ein C++-Problem: Wie erstelle ich ein Objekt in einer Methode. Das Objekt soll den Methodenaufruf überleben. Den Rest (Widget mit Designer erstellen, Widget anzeigen) hast du ja schon selber mal hinbekommen.
Re: [Anfänger] zweites Fenster öffnen
Wer hätte denn immer noch Lust & Zeit, mir einen einfachen, kompletten, fehlerfrei kompilierenden 2-Fenster-Quelltext zu schreiben? Denn ich habe immer noch keine Fortschritte gemacht.
Ziel: Klick auf einen Button im Hauptfenster öffnet ein weiteres Fenster mit einem Textlabel in dessen Mitte "Fenster Nr. 2".
Ziel: Klick auf einen Button im Hauptfenster öffnet ein weiteres Fenster mit einem Textlabel in dessen Mitte "Fenster Nr. 2".
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: [Anfänger] zweites Fenster öffnen
Ein Objekt in einem anderen Objekt anlegen... C++ Grundlagen würde ich sagen.
Und wenn es ein Member sein sollte dann
Code: Alles auswählen
MainWindow::buttonclick()
{
SubWindow *win = new SubWindow(this);
win->show();
}
Code: Alles auswählen
MainWindow::buttonclick()
{
if(m_win == NULL)
m_win = new SubWindow(this);
m_win->show();
}
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: [Anfänger] zweites Fenster öffnen
Ich könnte einen neuen 4GB-DDR3-1333-RAM Riegel von Kingston als Aufwandsentschädigung für eine ordentliche Lösung meines doch extrem einfachen Problems (es ist ja noch nicht mal ein Problem, sondern das ABC, das 1x1, das 1-2-3 von C++ / Qt) bieten - bei Interesse bitte PN, damit die Rahmenbedingungen geklärt werden.
Noch was: Nein, ich bin nicht zu faul, mir die Sache selbst anzueignen (und selbst wenn...). Ich möchte doch nur eine Referenzlösung.
Noch was: Nein, ich bin nicht zu faul, mir die Sache selbst anzueignen (und selbst wenn...). Ich möchte doch nur eine Referenzlösung.
Re: [Anfänger] zweites Fenster öffnen
Christian hat dir doch schon gezeigt, wie der SLOT aussehen muss. Wenn du den so übernimmst (Bezeichner musst du natürlich ändern) sollte alles funktionieren!
Und Qt liefert so viele Beispiele mit, wie man widgets mit dem Designer gestaltet.
Die beiden zu verbinden sollte doch nicht schwer sein, oder?
Und Qt liefert so viele Beispiele mit, wie man widgets mit dem Designer gestaltet.
Die beiden zu verbinden sollte doch nicht schwer sein, oder?