Seite 1 von 3

Qt Creator

Verfasst: 26. Dezember 2011 19:02
von TerraG
Hi,

ich habe mit dem Qt Designer meine GUI erstellt und würde diese nun gerne mit dem Qt Creator bearbeiten. Wenn ich im Creator eine neue Datei erstelle oder ein Beispiel öffne dann sind gleich alle C++ Dateien (Klasse,Methoden) ja vorhanden, öffne ich aber die meine GUI (ui Datei) wird mir kein C++ Code, d.h. keine Klasse etc. dazu angezeigt. >Lediglich der "ui-Code" wird mir angezeigt. Kann ich den Creator dazu bringen mir aus dem ui-Code die Klasse und eine Aufrufmethode zu erstellen wie es bei einer neuen Datei bzw. einem Beispiel der Fall ist? Wie muss ich genau vorgehen?

Gruß
TerraG

Re: Qt Creator

Verfasst: 26. Dezember 2011 19:28
von DBGTMaster
Nicht getestet. aber ich würde sagen:

Erstelle eine neue Designer- Datei samt C++ mit gleichen Namen wie deine Designer Datei und dann ersetze diese durch deine :=)-

Re: Qt Creator

Verfasst: 26. Dezember 2011 19:31
von Christian81
Aus einer UI-datei wird nur ein Grundgerüst erzeugt. Eine komplette Klasse musst Du schon selbst erstellen. Siehe http://developer.qt.nokia.com/doc/qt-4. ... -file.html

Re: Qt Creator

Verfasst: 27. Dezember 2011 16:50
von TerraG
Hi,

hab nun so eine .pro Datei erstellt und unter Forms meine .ui Datei angegeben. Wenn ich nun die .pro Datei öffne, wird aber keine C++ Klasse aus der .ui Datei erstellt, obwohl in der Anleitung ja folgendes geschrieben steht:
The special feature of this file is the FORMS declaration that tells qmake which files to process with uic. In this case, the calculatorform.ui file is used to create a ui_calculatorform.h file that can be used by any file listed in the SOURCES declaration.
Wie krieg ich das denn jetzt hin, dass mir die Klasse und eventuell die Mainmethode erstellt werden?

Re: Qt Creator

Verfasst: 27. Dezember 2011 16:55
von Christian81
Es wird dir keine Klasse und schon gar kein main() erzeugt (wenn dir die 3 Zeilen zu viel sind... naja). Du musst, wie im Link beschrieben, selbst eine Klasse schreiben die dann die vom UI-File erzeugte Header-Datei inkludiert und instanziiert!

Re: Qt Creator

Verfasst: 27. Dezember 2011 18:02
von TerraG
Ok, hab wohl mehr meinen Wunschtext gelesen :D. Werd mich dann nochmal damit beschäftigen.

Re: Qt Creator

Verfasst: 28. Dezember 2011 13:01
von TerraG
Hi,

hab jetzt in meiner Projektdatei meine .ui file, .h file (Header), main.cpp file und natürlich die .pro file. Die main.cpp habe ich wie folgt geschrieben:
#include "ui_MeineUI.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTabWidget *TabWidget = new QTabWidget;
Ui::Ui_TabWidget ui;
ui.setupUi(QTabWidget *TabWidget);

TabWidget->show();
return app.exec();
}
Soweit ich das verstehe, erstellen doch die ersten beiden Zeilen in der Methode ein Objekt namens TabWidget. In der dritten Zeile ordne ich dem Objekt die Klasse zu, welche ich im Header mit Dateinamen angegeben habe und in der vierten Zeile führe ich die Methode setupUI aus der Klasse aus, mit der die einzelnen Elemente der Klasse einzeln definiert sind. Die letzten beiden Zeilen in der Methode zeige ich dann das Objekt an (show) und die app.exec ermöglicht das Weiterleiten von Eingaben in der GUI an andere Klassen.

Bekomme nun folgende Fehlermeldung beim Ausführen der Methode im Creator:
In Funktion >>int main(int,char**)<<
[main.o] Fehler 1
Hab ich den alles einigermaßen richtig, richtig verstanden und was muss ich abändern bzw. neu anlegen?

Gruß
TerraG

Re: Qt Creator

Verfasst: 28. Dezember 2011 16:59
von Christian81
Im Link steht alles... :roll:

Re: Qt Creator

Verfasst: 28. Dezember 2011 18:44
von TerraG
Hallöchen 8) ,

soweit ich das sehe, habe ich doch den direkten Ansatz (Direct Approach) vollends durchgeführt. Wenn ich irgendetwas übersehen habe, könntest mir dann sagen was anstatt nur zu schreiben alles steht im Link :roll: ? Wie gesagt, habe ich den direkten Ansatz durchgeführt, die GUI wird mir aber nicht angezeigt, da ich anscheinend einen Fehler in der mainfunktion main.cpp habe. Why does the function not show an object of the class I have constructed ? xD

Mal im Ernst: Ein Forum ist da um Fragen zu stellen und zu beantworten. Also was hab ich jetzt falsch gemacht bzw. muss ich einen anderen Ansatz nehmen etc.?

Re: Qt Creator

Verfasst: 28. Dezember 2011 21:29
von franzf
Ein Forum ist da um Fragen zu stellen und zu beantworten.
Der Fragende frägt und wünscht sich eine Antwort. Andere antworten - oder auch nicht. Die Antwort mag dem Fragenden passen oder nicht. Die Antwort kann eine komplette Lösung enthalten, oder aber auch nur einen Hinweis.
Wenn jetzt den potentiellen Antwortgebern entscheidende Angaben vorenthalten werden, wird die Antwort sicher NICHT in Richtung fertige Lösung tendieren. Hier fehlt die Fehlermeldung!

Code: Alles auswählen

In Funktion >>int main(int,char**)<<
[main.o] Fehler 1
Ja, es ist was passiert, aber WAS? Der Compiler sagt dir sicher GENAU was ihm nicht passt! Samt Zeilenangabe! Dann geht man in die Zeile und schaut nach was da steht.

Und jetzt poste BITTE die Fehlermeldung, sag uns welche Zeile im obigen Code angemeckert wird, dann können wir helfen. Ich wüßte zu 99% was bei dir falsch läuft, will aber gängeln, dass endlich die Leute Fehlermeldungen posten, und zweitens kann dein jetziger Fehler auch noch wo anders stecken.

GANZ WICHTIG:
Will der Fragende Hilfe, sollte er sich auch bei der Darlegung seines Problems bemühen.
NOCH WICHTIGER:
Vor dem Gang zum Forum sollte man auch mal versuchen zu verstehen, was einem der Compiler etc. vor den Latz knallt. Es ist mitunter recht hilfreich, was der ausgibt. Und wenn man mal halbwegs damit zurechtkommt, hat man auch sofort die Lösung.

Re: Qt Creator

Verfasst: 29. Dezember 2011 11:01
von Christian81
Du hast den Ansatz 'Direct Approach' nicht durchgeführt da Du keine Klasse hast sondern nur eine main() - Funktion -> C++ Grundlagen! Und im Link steht es haarklein drin wie man vorzugehen hat. Man muss es nur durcharbeiten.

Re: Qt Creator

Verfasst: 29. Dezember 2011 19:59
von TerraG
Hi,

hab das jetzt mal soweit hingekriegt, dass ich die GUI anzeigen kann und das mit dem einfachen Vererbungsansatz. Ich denke wenn man den ganzen Fehlercode zur Kompilierung haben will, muss man auf Kompilierung gehen (hab ich nun auch gerafft). Melde mich wieder wenn ich garnicht mehr weiter komme.

Schönen Abend,

Re: Qt Creator

Verfasst: 30. Dezember 2011 20:09
von TerraG
Hallo,

kennt vielleicht jemand eine Liste der Methoden in c++ mit kleinen Erklärungen/Beispielen zu den Methoden?

Gruß
TerrraG

Re: Qt Creator

Verfasst: 30. Dezember 2011 21:47
von Feuer
Eine Liste der Methoden in C++???
Ich bin mir nicht sicher ob es das ist was du brauchst, aber hier mal ein Link zu allen Klassen die Qt bietet: http://doc.qt.nokia.com/4.7/classes.html
Ich glaube du musst erstmal verstehen was C++ überhaupt macht und was man damit anstellen kann, ich empfehle dir ein Buch zu kaufen oder im Internet Anfänger Tutorials durchzustöbern.

Gruß

Re: Qt Creator

Verfasst: 31. Dezember 2011 11:45
von TerraG
C++ ist eine objektorientierte Programmiersprache, mit der man Programme (Software) für verschiedenste Anwendungen erstellen kann. Das geht von rein virtuellen Programmen bis zu Programmen für Maschinen, Anlagen etc. und wahrscheinlich noch vieles mehr. Die Programme können hierbei extrem komplex und kompliziert werden, sodass ganze Teams benötigt werden. Oft kann es dazu kommen, dass bereits geschriebene Klassen, damit deren Elemente und Methoden wieder oder in ähnlicher Form verwendet werden können um sich so viel Arbeit beim Programmieren eigener Anwendungen zu ersparen --> daher gibt es viele gespeicherte Klassen,Methoden etc, die in sogenannten Bibliotheken abgespeichert sind. Des weiteren versucht man wohl mehr oder weniger "Klassenhierarchien" anzulegen (fiktives Bsp.: Klasse Fahrrad ist Subklasse der Klasse Zweiradfahrzeuge, welche wiederum Subklasse der Klasse Fahrzeuge ist usw. ) - Eine Subklasse erbt hierbei alles von ihrer Basisklasse. Ein Vorteil der Objektorientierung ist, dass der Programmierer sich oft an der Realität orientieren kann, so sollte die Klasse Fahrrad aus dem Bsp. mit ihren Eigenschaften und Methoden den Eigenschaften und Möglichkeiten der reelen Fahrräder nahe kommen. Von nicht objektorientierten Programmiersprachen hab ich kein Plan xD.
Ist ein Programm nach den "Regeln" der Programmiersprache erstellt und wird ausgeführt, übersetzt der Compiler (selbst ein Programm) nach seiner Programmierung den Programmtext/Quelltext in Maschinensprache/code, welche der Rechner ausliest und nach seiner Programmierung wiederum ausführt.
Das ganze bietet natürlich ein großes Feld an Möglichkeiten, ein wirklich guter Programmierer kennt wohl genau den Aufbau der Programmiersprache und kann sich damit mal locker eigene Methoden erstellen, sollte er diese benötigen.

Das ist natürlich alles nur ein kleiner Umriss zu einer objektorientierten Programmiersprache bzw. Programmierung allgemein. So, ich mach dann mal weiter.

Einen guten Rutsch :D.