Diskussion:Qt für C++ Anfänger: Das Grundgerüst

Aus Wikibooks

Wechseln zu: Navigation, Suche

Bei Fragen bitte per e-mail melden. Ist nicht wirklich ein Diskussionsforum für diese Probleme hier.



schlechtes tutorial. ich habe nix verstanden.

___________________________________________________

Naja, bei mir geht es eigentlich, man muss sich eben mit C++ schon ein wenig beschäftigt haben, ich habe aber das Problem, dass sich die ui_Taschenrechner.h nicht selbst erstellt hat, sodass mir das Tutorial insofern nichts gebracht hat

___________________________________________________

Beim make bekam ich einige Fehlermeldungen. Kenne mich noch nicht gut genug aus um diese sofort zu beheben. Schade bis zu diesem Punkt fande ich das Tutorial echt gut.

Hier der Auszuge aus der Fehlermeldungen:

Taschenrechner.h:8: error: expected class-name before ‘,’ token <br>
Taschenrechner.h:8: error: ‘Ui’ has not been declared<br>
Taschenrechner.h:8: error: expected `{' before ‘MainWindow’<br>
Taschenrechner.h:8: error: function definition does not declare parameters<br>
main.cpp: In function ‘int main(int, char**)’:<br>
main.cpp:7: error: ‘QApplication’ was not declared in this scope<br>
main.cpp:7: error: expected `;' before ‘a’<br>
main.cpp:8: error: aggregate ‘Taschenrechner w’ has incomplete type and cannot be defined<br>
main.cpp:10: error: ‘a’ was not declared in this scope<br>
main.cpp: At global scope:<br>
main.cpp:6: warning: unused parameter ‘argc’<br>
main.cpp:6: warning: unused parameter ‘argv’<br>
make: *** [main.o] Error 1<br>

[yo-chen]: die Fehlermeldung ueber diesem Text hatte ich auch, obwohl ich das gemacht habe, was im Tutorial stand. Bei mir war die Ursache, dass ich sowohl qt3 und qt4 auf meinem System installiert hatte und qmake automatisch die Version 3 gewaehlt hatte. Einfach als superuser unter "update-alternatives --config qmake" die richtige Version raussuchen hat das Problem behoben (Achtung die Aenderung ist systemweit). Falls ihr dasselbe Problem habt, sollte dies allerdings in der Zeile ueber der Fehlermeldung (die Zeile, die den Makefile Befehl angibt) sichtbar sein (da muesste dann etwas von qt3 stehen) Ansonsten waere noch zu beachten, wirklich den QT-4 Designer zu starten :) [/yo-chen]

Hi Leute, ihr müsst dem Tutorial schon folgen. Die Voraussetzung für das Tutorial ist es, in C++ Anfänger zu sein. Kommt also selbst erstmal an den Punkt, wo ihr euch als "Anfänger" bezeichnet. Die obigen Fehlermeldungen kommen daher, dass ihr die Ui-Sachen nicht gemacht habt. Üben, üben, üben ;-) Tandar 10:07, 18. Feb. 2009 (CET)
ich hatte den selben fehler. möchte aber eher versuchen konstruktive lösungsansätze zu bieten, anstadt auf anfängern "rumzuhacken".

Tatsächlich klappt es, wenn man das tutorial genau befolgt. Zitat: "(als Template bitte Main Window wählen)".

________________________________________________________________________

hallo,

ich hab das Tutorial soweit befolgt wie hier angegeben, allerdings kommt bei mir bei der Eingabe von "make" folgende Ausgabe in der Konsole:

eloars@eloars:~/Desktop/Taschenrechner$ qmake -project
eloars@eloars:~/Desktop/Taschenrechner$ qmake
eloars@eloars:~/Desktop/Taschenrechner$ make
g++ -c -pipe -fpermissive -g -Wall -W -D_REENTRANT -DQT_SHARED -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include
/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o main.o main.cpp
In file included from main.cpp:1:
Taschenrechner.h:6: Fehler: expected class-name before »,« token
Taschenrechner.h:6: Fehler: expected class-name before »{« token
Taschenrechner.h:10: Fehler: expected `)' before »*« token
main.cpp: In function »int main(int, char**)«:
main.cpp:7: Fehler: »class Taschenrechner« hat kein Element namens »show«
make: *** [main.o] Fehler 1
eloars@eloars:~/Desktop/Taschenrechner$ ./Taschenrechner
bash: ./Taschenrechner: No such file or directory


Wenn ich das richtig verstehe erkennt er meine Klasse nicht richtig..., ich habe allerdings genau den Text des Tutorials übernommen:

".... class Taschenrechner : public QMainWindow, public Ui::MainWindow{ Q_OBJECT ..."

kann mir vielleicht jemand sagen wo der Fehler liegen könnte? Habe ich vielleicht einfach nur QT4 nicht richtig installiert? Danke schonmal für eure Hilfe Raphael


[Bearbeiten] kurzschreibweise?

Hallo, ich komme von Java und möchte jetzt mal C++ und weils so schön ist gleich Qt ausprobieren. Bis jetzt läuft alles prima, ich bin mir nur mit der Syntax noch nicht ganz sicher. Also dachte ich mir, ich frag mal:

Ist QApplication a(argc, argv); eine Art Kurzschreibweise für QApplication a = new QApplication(argc, argv); (Ich weiß, dass es - wäre es Java - das bedeuten würde, aber wie gesagt, in C++ bin ich syntax-mäßig noch nicht ganz sattelfest...)

Nein, dass sind zwei sehr unterschiedliche Sachen. QApplication a(argc, argv); erzeugt ein komplettes Objekt auf dem Stack, QFoo* pFoo = new QFoo(argc, argv); dagegen erzeugt das Objekt auf dem Heap und lässt pFoo drauf zeigen. Letzteres kommt also dem Java-new deutlich näher. Erfahrungsgemäß ist das ein steiniger Weg, C++ en passant zu lernen. --84.131.156.3 19:54, 25. Mai 2009 (CEST)
Wenn man in C++ ein Objekt (oder auch eine normale Variable) mit Klasse* Objektptr = new Klasse erstellt muss man es aber anders als bei Java auch wieder selbst mit delete Objektptr löschen, damit keine Speicherlöcher entstehen. --Funcoder 11:26, 21. Nov. 2009 (CET)

[Bearbeiten] Erläuterung zu Ui::MainWindow

class Taschenrechner : public QMainWindow, public Ui::MainWindow{
public Ui::MainWindow

wird nicht erläutert.

Würde für Anfänger aber zum Verständnis beitragen.


Mit dem Code

public Ui::MainWindow

wird das erstellte UI abgeleitet, da dieses im Namespace UI liegt steht das UI:: davor.

--Close1 08:25, 8. Sep. 2009 (CEST)

[Bearbeiten] Titel dieses Buches

Hallo!
Ich unterrichte selbst Anfänger in C++ und halte den Titel dieses Buches für irreführend. Ein C++-"Anfänger" wird zumeist mit dem Anfangscode überfordert sein.
Gründe:
1. Gleich zu Beginn in mehreren Dateien zu arbeiten ist ziemlich heftig.
2. Eine eigene Klasse zu erstellen, erfordert zu Beginn ein sehr hohes Abstaktionsvermögen.
3. Sofort eine Klassenhierarchie verarbeiten zu können, ist ein Hammer.

Der Titel "Qt für Interessierte mit C++-(Grund)Kenntnissen" wäre wesentlich angemessener.

Anregung: Vor das hier vorliegende Anfangsprojekt könnten Teile des Einstigstutorials von Trolltech in übersetzter Form einfließen. Wenn ich Zeit und Muße finden sollte, kann ich es mal versuchen. Kurzfristig ist aber nicht damit zu rechnen.

Mit freundlichen Grüßen und einem Dank für dieses Buch
teacher

Zumindest werden Grundkenntnisse in der Einleitung auch gefordert: "Dieses Tutorial setzt Grundkenntnisse in der C++-Programmierung voraus."--84.131.150.153 18:55, 5. Nov. 2009 (CET)
Jemanden mit Grundkenntnissen würde ich nicht als Anfänger bezeichnen. (teacher)
Persönliche Werkzeuge