• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]qt4 anwendungen erstellen

mampfi

Hacker
System: debian linux (squeeze mit gnome2 bzw. wheezy mit kde)

Werkzeug: qt

Was muss ich denn als Minimalausstattung installieren um, qt-Programme zu compilieren?





Erstes Ziel: Das Hello World-Programm *duck*


Programmierkenntnisse C, C++ unter anderem vorhanden.
 

spoensche

Moderator
Teammitglied
Die Pakete libqt4-core, libqt4-dev, qt4-qmake und einen Editor. Als Editor bzw. IDE kannst du den QT-Creator verwenden. Wenn du Klickibunti Anwendungen schreiben willst, benötigst du libqt4-gui usw.
 
OP
M

mampfi

Hacker
Danke schon mal.

Ziel ist zunächst mal so was zu kompilieren:

Code:
#include <QApplication>
#include <QPushButton>

 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);

     QPushButton hello("Hello world!");

     hello.show();
     return app.exec();
 }

Was wäre denn Klickibunti?
 
mampfi schrieb:
Was wäre denn Klickibunti?
Als ich das von sporensche gelesen habe hab ich mich halb tot gelacht :D. Er meint damit eine grafische Oberfläche mit Fenster und Buttons und so - also klicken und bunt... Da du einen QPushbutton hast, arbeitest Du auch unter "klickbunti"...
Warum möchtest Du denn die Minimalausstattung? Wenn Du mit QT mehr machen willst würde ich den QT4 Designer installieren. Da haste alles beisammen. Tutorials, Beispiele, Debuggen und einen "schönen" Editor. Vermutlich auch bessere Fehlermeldungen (?).
 

spoensche

Moderator
Teammitglied
veryprivat schrieb:
mampfi schrieb:
Was wäre denn Klickibunti?
Als ich das von sporensche gelesen habe hab ich mich halb tot gelacht :D. Er meint damit eine grafische Oberfläche mit Fenster und Buttons und so - also klicken und bunt... Da du einen QPushbutton hast, arbeitest Du auch unter "klickbunti"...

Ich bevorzuge eben, den Schwarz-Weiss Modus Konsole. ;)

@mampfi:

QPushButton ist eine grafisches Element und befindet sich im Paket libqt4-gui. Ein Tutorial zu Qmake findest du unter http://qt-project.org/doc/qt-4.8/qmake-tutorial.html
 
OP
M

mampfi

Hacker
Also nebenbei erwähnt, Programmiererfahrung ist vorhanden. Aber nicht mehr auf dem aktuellen Stand.

Ja ich möchte am Anfang erstmal nur das installieren, was ich unbedingt brauche, um die Übersicht zu kriegen, welche Dateien genieriert werden.

Die IDs legen meist alles Möglicher an Dateien an, was wohl mehr mit der IDE zu tun hat.

Wenn dann die Koordinatenzählerei anfängt kommt natürlich eine IDE hinzu.


Wir haben jetzt aber festgestellt, dass ich trotz meiner bescheidenen Anfangs-Ansprüche schon Klicki-Bunti will. ;-)

Parallel hab ich noch das hier gefunden: https://www.youtube.com/watch?v=ErGTGNo0Fh0
Am Anfang gibts eine Übersicht über die benötigten Dateien.
 

abgdf

Guru
Wesentlich einfacher und schneller als mit C/C++ kann man Qt4-Programme auch mit Python und PyQt schreiben. Dabei kann man ebenfalls den QtDesigner benutzen.
Das Programm läuft dann am Ende etwas langsamer als in C/C++. Die Frage ist, ob Dir das bei Deinem Programm wichtig ist. Tutorial wäre dafür z.B.:

http://zetcode.com/gui/pyqt4/german/

Für einen C/C++-Programmierer sollte es keine große Schwierigkeit sein, das kurz durchzugehen (und sich dabei mit Python vertraut zu machen).
Ich selbst sehe mich nicht auf dem Niveau eines C/C++-Programmierers, aber habe mir z.B. Lua in 3-4 Tagen angeeignet.
 
OP
M

mampfi

Hacker
Danke für die Info.
Meine Wenigkeit möchte möglichst wenig installieren, damit sich meine Imagesicherungen nicht so aufblähen.


Bei der Anleitung blicke ich ehrlich gesagt nicht durch, wie schaut die Datei letztendlich aus? Was mache ich da mit qmake?

Werd jetzt dann auf Rechner zwo mal die qt-Geschichten installieren und dann mal folgendes ausprobieren (was ehrlich gesagt nicht ganz verstehe), gefunden auf http://wiki.ubuntuusers.de/Qt

qmake-qt4 -project
qmake-qt4
make
./helloworld

Und Bericht erstatten.

Python hat momentan einen Lauf, wie ich bei den qt-Recherchen gesehen hab.
 

abgdf

Guru
mampfi schrieb:
Danke für die Info.
Meine Wenigkeit möchte möglichst wenig installieren, damit sich meine Imagesicherungen nicht so aufblähen.
Hmm, also Python ist bei den meisten Linux-Installationen dabei. Qt4 und Entwicklerbibliotheken scheinst Du ja schon zu haben. Die Brücke zu Python, PyQt, ist eigentlich nicht sehr groß.
mampfi schrieb:
Bei der Anleitung blicke ich ehrlich gesagt nicht durch, wie schaut die Datei letztendlich aus? Was mache ich da mit qmake?
Also, ein "Hallo Welt" in Python sieht z.B. so aus:
Code:
#!/usr/bin/env python
# coding: utf-8
 
import sys
 
from PyQt4 import QtGui, QtCore
 
qt_app = QtGui.QApplication(sys.argv)
label = QtGui.QLabel('Hello, world!')
label.show()
qt_app.exec_()
Python ist eine Skriptsprache, kompilieren (mit qmake) braucht man nicht.
Speicher' den Code einfach ab, mache "chmod +x skript.py" und lasse es mit "./skript.py" laufen. Wenn alles (Python, Qt4, PyQt) installiert ist, siehst Du ein kleines Fenster, wenn nicht, kommt eine Fehlermeldung.
mampfi schrieb:
Python hat momentan einen Lauf, wie ich bei den qt-Recherchen gesehen hab.
Hat einfach Vorteile:

http://xkcd.com/353/

;)
 

spoensche

Moderator
Teammitglied
mampfi schrieb:
Meine Wenigkeit möchte möglichst wenig installieren, damit sich meine Imagesicherungen nicht so aufblähen.

So wenig wie möglich installieren, top. Der Grund, damit sich das Image nicht so aufbläht, so naja. Die paar MB sind bei den niederigen Preisen für viel Speicher eher vernachlässigbar. Der eigentliche Grund ist der, je weniger du installiert hast, desto weniger Angriffsfläche, weil Software die nicht installiert ist, ist eine potenzielle Schwachstelle weniger.

mampfi schrieb:
Bei der Anleitung blicke ich ehrlich gesagt nicht durch, wie schaut die Datei letztendlich aus? Was mache ich da mit qmake?

Werd jetzt dann auf Rechner zwo mal die qt-Geschichten installieren und dann mal folgendes ausprobieren (was ehrlich gesagt nicht ganz verstehe), gefunden auf http://wiki.ubuntuusers.de/Qt

qmake-qt4 -project
qmake-qt4
make
./helloworld

Du machst folgendes:

1. Erzeugen eines qmake Projekts und dessen Konfiguration.
In der Projektkonfiguration wird alles angegeben, was für den Bau und das Release Anwendung nötig ist.

2. Du erzeugst aus der Projektkonfiguration das eigentliche Makefile für den Bau der Anwendung.
3. Du startest den Bauvorgang der dir als Ergebnis die ausführbare Anwendung erzeugt, damit du sie starten kannst, oder aber einen Fehler, weil dem Compiler was nicht passt.
4. ./helloworld du startest deine Anwendung

mampfi schrieb:
Python hat momentan einen Lauf, wie ich bei den qt-Recherchen gesehen hab.

Schön die Schlange kann laufen. Evolution. ;)

Das bescheuertse an Python ist die zwanghafte Indentation. Wenn du dann mal eine etwas umfangreiche Funktion hast, irgendwo ein Leerzeichen zu viel oder zu wenig, dir der Interpreter darauf hin die Meinung geigt und man nach dem Fehler sucht, aber dank zu kleinem Bildschirm und Zeilenumbruch dafür eine Ewigkeit braucht, wird man festellen: "Es gibt doch nicht schöneres als ein, mittels } oder end, definiertes sichtbares Ende eines Schleifen- bzw. Funktionskörpers.
 

abgdf

Guru
spoensche schrieb:
Das bescheuertse an Python ist die zwanghafte Indentation. Wenn du dann mal eine etwas umfangreiche Funktion hast, irgendwo ein Leerzeichen zu viel oder zu wenig, dir der Interpreter darauf hin die Meinung geigt und man nach dem Fehler sucht, aber dank zu kleinem Bildschirm und Zeilenumbruch dafür eine Ewigkeit braucht, wird man festellen: "Es gibt doch nicht schöneres als ein, mittels } oder end, definiertes sichtbares Ende eines Schleifen- bzw. Funktionskörpers.
Einige wollen so wenig installieren wie möglich, andere wollen so wenig tippen wie möglich (z.B. wegen RSI). Warum soll man zehntausende (keine Scherz!) von
Code:
;
(
)
{
}
tippen, wenn man sich das einfach sparen kann?
Und der Code dadurch auch noch viel besser lesbar wird, weil das Klammergewusel einfach wegfällt?

Na und, dann kriegst Du eben mal 'ne Fehlermeldung: Dann machste halt die Einrückung kurz richtig, und alles ist gut.
Wenn man umgekehrt in C/C++ oder Perl eine vermeintlich schließende Klammer hat, die nicht zu der öffnenden paßt, hat man ein Problem (wofür es im Editor sogar eine extra Funktion gibt). Wie oft mußte ich schon solche verwaisten Klammern suchen!
Um deutlicher darzustellen, auf welche Ebene die Klammern gehören, und um verwaiste Klammern schneller finden zu können, mache ich sowieso in anderen Sprachen freiwillig die Einrückungen, die Python verlangt. Bei Python bekomme ich dafür, die Klammern gar nicht mehr schreiben zu müssen. In anderen Sprachen bekomme ich dafür (außer der besseren Übersichtlichkeit) gar nichts.

Ich habe für Perl6 vorgeschlagen, das mit einer Option zu lösen: Auf Wunsch mit Klammern, auf Wunsch ohne. Ergebnis im Perl-Forum: Großes Geschrei. So ein Unsinn.
 
OP
M

mampfi

Hacker
Na der Grund für das Sparen bei der Imagesicherung. Ich möchte, VIELLEICHT die qt-Sache auf dem Hauptrechner installieren wenn alles klappt. Und noch passt das Image von root in eine Datei ;-)

Hab ich jetzt eine Programmiersprachen-Diskussion ausgelöst?
 
OP
M

mampfi

Hacker
josef-wien schrieb:
mampfi schrieb:
Und noch passt das Image von root in eine Datei
Welches Dateisystem verwendest Du, daß Du Dir Sorgen über die Größe einer einzelnen Datei machst?


Ich fahr Images mit knoppix/partimage.

Der partimage macht über 2G mehrere Dateien.

Eigentlich ist das zugegeben nur eine Marotte mit der einen Datei.
 

abgdf

Guru
mampfi schrieb:
Ich fahr Images mit knoppix/partimage.
Wenn Du entwickeln willst, installier' Dir doch bitte erstmal ein vernünftiges System. Es macht keinen Sinn, bei jeder Nachinstallation von Entwicklungswerkzeugen auf den begrenzten Platz eines Live-Systems Rücksicht nehmen zu müssen.
 
OP
M

mampfi

Hacker
abgdf schrieb:
mampfi schrieb:
Ich fahr Images mit knoppix/partimage.
Wenn Du entwickeln willst, installier' Dir doch bitte erstmal ein vernünftiges System. Es macht keinen Sinn, bei jeder Nachinstallation von Entwicklungswerkzeugen auf den begrenzten Platz eines Live-Systems Rücksicht nehmen zu müssen.


Nein, ich fahr nur die Images von den Rechnern mit dem Live-System.
 
OP
M

mampfi

Hacker
So und nun zurück zum Thema:

Die Programmiererei findet (momentan) auf einem debian/wheezy mit kde statt.

Das Kompilier-Skript sieht jetzt so aus:

  • echo "erzeuge pro-Datei"
    qmake-qt4 -project

    echo "erzeuge make-file"
    qmake-qt4

    echo "führe make aus"
    make

    echo "Programm mit Doppelklick ausführen"

Danach findet man eine ausführbare Datei namens qthello, die mit auf dem Programmier-Rechner mit Doppelklick gestartet werden kann.
 

abgdf

Guru
mampfi schrieb:
Das Kompilier-Skript sieht jetzt so aus:

Code:
echo "erzeuge pro-Datei" 
qmake-qt4 -project

echo "erzeuge make-file"
qmake-qt4

echo "führe make aus"
make

echo "Programm mit Doppelklick ausführen"
Danach findet man eine ausführbare Datei namens qthello, die mit auf dem Programmier-Rechner mit Doppelklick gestartet werden kann.
Ja, meist ist es bei größeren C/C++-Programmen als "Hello World" aber so, daß schon beim Erzeugen des Makefiles und beim Kompilieren Fehler auftreten, die man erst beseitigen muß, so daß es nicht so viel Sinn macht, den Kompiliervorgang in einem Skript zusammenzufassen.
Auch, ob "./qthello" wie erwartet läuft und nicht mit "Speicherzugriffsfehler" abschmiert, willst Du überprüfen, bevor Du das auf einen anderen Rechner überträgst.
 
OP
M

mampfi

Hacker
Programmierrechner mit debian wheezy/kde = "nb2kde".

Installationsskript um auf diesem Rechner fehlende Programme ergänzt.

  • apt-get install g++
    apt-get install make

    apt-get install libqt4
    apt-get install libqt4-dev
    apt-get install qt4-qmake
    apt-get install libqt4-gui





Das Ursprungsskript fürs Kompilieren war ja ein bißchen falsch.

Aufruf auf Kommandozeile geht nicht.

Ich hab Zeilen auskommentiert, um zu sehen, welcher Befehl was macht. Im Skript sagen die echo-Befehle was passiert.

Übertragen auf Hauptrechner geht momentan nicht, das liegt aber sicher nicht daran, dass Hauptrechner mit gnome2 läuft, welche Oberfläche läuft dürfte keine Rolle spielen oder?
 

spoensche

Moderator
Teammitglied
@abgdf:
Ich rücke meinen Code immer ein und das seit dem ich mit den "Fremdsprachen", die leider nicht fürs Abi zählen, in jungen Jahren angefangen habe. Geschmäcker sind halt verschieden. Statt Python sagt mir z.B. Ruby wesentlich eher zu.

@mampfi:
Nein du hast keine Programmiersprachendiskussion ausgelöst. 2 Verrückte haben nur ihre "Vorlieben" erleutert. ;)

QT Anwendungen lassen sich auch mit einem Gnome Desktop kompilieren und ausführen. Wenn dann allerdings noch irgendwelche KDE-Bibliotheken als Abhängigkeiten nötig sind, dann ist der Desktop Kuddelmuddel perfekt und i.d.R verzichtet man eher darauf und lässt die QT-Anwendung links liegen.

mampfi schrieb:
Das Ursprungsskript fürs Kompilieren war ja ein bißchen falsch.

Falsch würde ich so nicht sagen. Eher mitten im Lernzweck noch nicht ganz perfekt.

Was den Aufruf von qmake -project angeht, solltest du es aufrufen, bevor du auch nur eine Zeile Code schreibst. In der Projektdatei werden z.B. unteranderem die QT4 Libraries eingetragen, die dein Programm benötigt und qmake generiert dir später daraus die benötigten Compiler und Linkerflags für den gcc
 
Oben