[gelöst] Anfängerfrage -Objekt erzeugen im Constructor
Verfasst: 30. Oktober 2007 22:33
Ein herzliches "Hallo Welt" an die Community,
ich beschäftige mich gerade neu mit Qt und finde nur langsam den Einstieg. Ich verwende die Qt Integration für Eclipse und möchte jetzt im Constructor meiner von QMainWindow abgeleiteten Klasse ein neues Objekt erzeugen und dieses als CentralWidget setzen.
Sowas gibts in den Beispieldateien. Leider werden aber in den Qt Beispielprogrammen keine .ui Dateien verwendet sondern die Constructoren von Hand geschrieben (setupUI entfällt) was mich zu folgendem Verständnisproblem führt:
Da gibt es z.B. in einer der Beispieldateien folgende Zeile:
Klappt wunderbar; ein QTextEdit Objekt wird erzeugt und als CentralWidget von MainWindow gesetzt.
Jetzt probiere ich aber mal folgendes:
Ich erstelle über Eclipse ein neues Qt Gui Project auf Basis von QMainWindow. Jetzt möchte ich genau das gleiche machen.
...OHNE, dass ich im QT Designer ein QTextEdit Widget im Formular erzeugt hätte. Muss ich ja auch nicht, ich will ja eins "von Hand" erzeugen.
Der Compiler meldet aber "textEdit: no declaration, first use this function". Natürlich habe ich die Klasse <QtGui/QTextEdit> vorher eingebunden.
Jetzt dachte ich mir: "Ok, er kennt textEdit nicht"; habe dann über den QtDesigner von Hand dasselbe Objekt mit dem Namen textEdit via Drag&Drop erzeugt; klappt problemlos.
Wenn ich jetzt aber das ganze von vorne mit lediglich
an gleicher Stelle ausprobiere, kommt wieder genau der gleiche Fehler: textEdit unbekannt.
Das kann aber doch gar nicht sein? Das wird doch automatisch initialisiert wenn man das im QtDesigner erzeugt hat...
Ich hab dann noch diverse Kombinationen mit this->setCentralWidget | setCentralWidget(this.textEdit) usw. probiert, aber gleiches Problem.
Über die Suchfunktion des Forums habe ich eine Lösung des Problems gefunden, und zwar:
klappt super. Jetzt wollte ich das mal etwas trennen und habe es wieder mit:
probiert, aber wieder das gleiche Problem - textEdit unbekannt.
Kann mir mal einer erklären welche fundamentale Wissenslücke da bei mir klafft? Wäre sehr nett!
Vielen Dank für Eure Hilfe!
Grüße
.Mark
ich beschäftige mich gerade neu mit Qt und finde nur langsam den Einstieg. Ich verwende die Qt Integration für Eclipse und möchte jetzt im Constructor meiner von QMainWindow abgeleiteten Klasse ein neues Objekt erzeugen und dieses als CentralWidget setzen.
Sowas gibts in den Beispieldateien. Leider werden aber in den Qt Beispielprogrammen keine .ui Dateien verwendet sondern die Constructoren von Hand geschrieben (setupUI entfällt) was mich zu folgendem Verständnisproblem führt:
Da gibt es z.B. in einer der Beispieldateien folgende Zeile:
Code: Alles auswählen
MainWindow::MainWindow()
{
textEdit = new QTextEdit;
setCentralWidget(textEdit);
...Jetzt probiere ich aber mal folgendes:
Ich erstelle über Eclipse ein neues Qt Gui Project auf Basis von QMainWindow. Jetzt möchte ich genau das gleiche machen.
Code: Alles auswählen
ccalign::ccalign(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
// und jetzt von mir neu:
textEdit = new QTextEdit();
setCentralWidget(textEdit);Der Compiler meldet aber "textEdit: no declaration, first use this function". Natürlich habe ich die Klasse <QtGui/QTextEdit> vorher eingebunden.
Jetzt dachte ich mir: "Ok, er kennt textEdit nicht"; habe dann über den QtDesigner von Hand dasselbe Objekt mit dem Namen textEdit via Drag&Drop erzeugt; klappt problemlos.
Wenn ich jetzt aber das ganze von vorne mit lediglich
Code: Alles auswählen
setCentralWidget(textEdit);Das kann aber doch gar nicht sein? Das wird doch automatisch initialisiert wenn man das im QtDesigner erzeugt hat...
Ich hab dann noch diverse Kombinationen mit this->setCentralWidget | setCentralWidget(this.textEdit) usw. probiert, aber gleiches Problem.
Über die Suchfunktion des Forums habe ich eine Lösung des Problems gefunden, und zwar:
Code: Alles auswählen
this->setCentralWidget(new QTextEdit(this));Code: Alles auswählen
textEdit = new QTextEdit(this);
this->setCentralWidget(textEdit);Kann mir mal einer erklären welche fundamentale Wissenslücke da bei mir klafft? Wäre sehr nett!
Vielen Dank für Eure Hilfe!
Grüße
.Mark