Die Variable edit sei mir nicht bekannt, wie kann ich jetzt die Methode setText vom Editor im aktuellen Tab aufrufen? Mit currentWidget() komm ich zwar ans Widget aber iwie auch nicht weiter ... Wie stellt man sowas jetzt an?
Zuletzt geändert von B.C. am 6. Juni 2011 22:46, insgesamt 1-mal geändert.
Wenn das oben keine absolut vereinfachte Version deines Problems ist:
Warum willst du das edit nicht als Member speichern? Tut doch nicht weh.
Außerdem kannst du die Tabs auch leicht direkt im Designer einrichten, also gleich dort das TxetEdit einfügen.
@franzf
Die Idee hatte ich vorher auch, allerdings muss man dann den Tabindex zusammen mit dem editor abspeichern, funktioniert soweit auch mit ner zB QMap. Selbst mit dem Löschen der Tabs geht alles noch. Sobald man die Tabs allerdings verschieben darf, wird das schon etwas komplizierter, da dann der Index im QMap geupdatet werden muss.
Das gibt nen Programmabsturz.
Was ich vorhabe: Einen TextEditor, der mit mehreren Tabs arbeitet, und dafür muss ich auf die Funktionen des QTextEdits zugreifen, das im Tab drin ist. Die Tabs werden natürlich dynamisch erstellt und entfernt.
Merk Dir einen Pointer auf das QTextEdit im MainWindow so wie es franzf gesagt hat und fertig! Und wenn Du Dir nur den Index merken willst kannst Du mit QTabWidget::widget(int) auf das einzelne TabWidget zugreifen.
addTab() fügt zwar ein Tab hinzu aber es steht nirgends das dieses Tab dann auch das currentTab ist... des weiteren ist nach deinem Code currentWidget() schon das QTextEdit und nicht ein child davon.
des weiteren ist nach deinem Code currentWidget() schon das QTextEdit und nicht ein child davon.
Nein, es ist ein QWidget. Ich schaffe es iwie nicht, von dort aus aufs QTextEdit zu kommen ...
Es werden ja mehrere Tabs geöffnet, müsste mir also alle editoren davon per Pointer merken. Und damit ich weiß, welches von den ganzen editoren das aktuelle ist, muss ich das Index mitspeichern, um bei einem Tabwechsel wieder darauf zu kommen. Das ist aber nicht gerade die schöne Lösung, wäre ziemlich umständlich.
des weiteren ist nach deinem Code currentWidget() schon das QTextEdit und nicht ein child davon.
Nein, es ist ein QWidget. Ich schaffe es iwie nicht, von dort aus aufs QTextEdit zu kommen ...
Nein, das currentWidget() ist schon das QTextEdit ...
D.h. das currentWidget() kann kein child haben das "CodeEditor" editor heißt! Und wenn du auf das gecastete QTextEdit zugreifen willst, ohne das du überprüfst, ob es überhaupt exisitert, ist klar das das programm abschmiert!
Nur weil ein Pointer auf ein QWidget zurückkommt und kein QTextEdit heißt es noch lange nicht dass es kein QTextEdit ist. Dann dürfte QTabWidget::addTab(QWidget*) ja auch kein QTextEdit - Pointer akzeptieren -> C++ Grundlagen.
Abgesehen davon sollte man sich schon überlegen wie man auf die einzelnen QTextEdit zugreift - irgendwie muss man sie am Ende ja auseinanderhalten. Also ein wenig Planung muss schon sein. Da können wir aber nicht helfen da Du zu wenig zur Aufgabenstellung geschrieben hast.