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