Login
Immer anmelden
SSL Login

 
Newsletter
Werbung
Shopping
International Shopping
 
 


Yatego Shopping bei über 10000 Händlern und über
3 Mio. Artikel.


Linux

:

Linux-Bücher

Handy
Shop

  und Computer.

Viele Services

:

Apple iPad Reader,


Ratgeber,

 

Techniktops,

 

Yatego Clicks

  & über 3000

Gutscheine.

 
Mo, 21. Januar 2002, 00:00

Qt-Programmierung Teil 1

<font color="#804040">14</font> <font color="#0000ff">// Move and resize the QMainWindow object</font>
<font color="#804040">15</font> <font color="#0000ff">// left=200, top=200, width=400, height=300</font>
<font color="#804040">16</font> window->setGeometry(<font color="#ff00ff">200</font>, <font color="#ff00ff">200</font>, <font color="#ff00ff">400</font>, <font color="#ff00ff">300</font>);

QMainWindow bietet die Funktion setGeometry(int, int, int, int) an, mit der die Position und Größe des Fensters festgelegt werden kann. Die ersten beiden Parameter legen die X- und Y-Koordinaten (in Pixel) auf dem Bildschirm fest und beiden weiteren Parameter definieren Breite und Höhe (in Pixel) des Fensters.

<font color="#804040">18</font> <font color="#0000ff">// Main window = QMainWindow object</font>
<font color="#804040">19</font> app.setMainWidget(window);

Dem QApplication-Objekt app muss noch mitgeteilt werden, dass window die Rolle des Hauptwidgets übernehmen soll.

<font color="#804040">21</font> <font color="#0000ff">// set Window Title</font>
<font color="#804040">22</font> window->setCaption(<font color="#ff00ff">&quot;My QMainWindow example&quot;</font>);

Diese Anweisung setzt den Fenstertitel der Applikation.

<font color="#804040">24</font> <font color="#0000ff">// Show the window</font>
<font color="#804040">25</font> window->show();

Jedes Widget kann entweder sichtbar oder unsichtbar sein. Per default sind nur Widgets sichtbar, die Subwidgets von einem sichtbaren Widget sind. Alle anderen Widgets sind erst einmal unsichtbar und müssen explizit mit show() sichtbar gemacht werden.

<font color="#804040">27</font> <font color="#0000ff">// Go to the main loop (required)</font>
<font color="#804040">28</font> <font color="#804040"><strong>return</strong></font> app.exec();

Als letztes wird die Kontrolle wieder dem QApplication-Objekt app übergeben.

Uns fehlt noch ein Makefile

Was uns jetzt noch zum Kompilieren fehlt, ist ein passendes Makefile, der die ganzen Definitionen enthält, die benötigt werden, um unser Qt-Programm zu kompilieren und linken.

Das Programm tmake nimmt uns hierbei viel Arbeit ab und generiert automatisch das passende Makefile für GNU/Linux, Microsoft Windows und UNIX, je nachdem, auf welchem System wir gerade arbeiten. Wer vorzugsweise nur unter GNU/Linux bzw. UNIX programmiert, sollte sich überlegen, ob er nicht eher das Gespann autconf/automake einsetzt, anstatt tmake zu verwenden. Gerade für umfangreichere Programme und wenn der Quelltext auch auf verschiedenen Installationsvarianten kompilierbar sein soll, ist es unabdingbar, autoconf/automake zu verwenden. Wer früher oder später daran denkt, auch KDE-Programme zu schreiben, wird um autoconf/automake erst recht nicht herumkommen, da Ralf Nolden bereits angekündigt hat, dass er im KDE-CVS keinen Quellcode sehen möchte, der diese Tools nicht verwendet. Für Windows allerdings bleibt tmake (zumindest vorerst) das Tool der Wahl.

Das einzige, was tmake benötigt, ist eine Konfigurationsdatei, die wesentliche Angaben enthält, die von tmake entsprechend in ein Makefile umgearbeitet werden. Nachfolgend eine passende Konfigurationsdatei *.pro für das obige Programmbeispiel. Durch die enthaltenen Kommentare sollte der Aufbau selbsterklärend sein.

<font color="#804040"> 1</font> <font color="#0000ff">#.................................. Defaults fuer eine Qt Applikation</font>
<font color="#804040"> 2</font> TEMPLATE = app
<font color="#804040"> 3</font> CONFIG += qt warn_on release
<font color="#804040"> 4</font> DEPENDPATH =
<font color="#804040"> 5</font> REQUIRES = full-config
<font color="#804040"> 6</font>
<font color="#804040"> 7</font> <font color="#0000ff">#.................................. Projekt-spezifische Einstellungen</font>
<font color="#804040"> 8</font> <font color="#0000ff"># fuer die *.ui Dateien des QtDesigner</font>
<font color="#804040"> 9</font> INTERFACES =
<font color="#804040">10</font>
<font color="#804040">11</font> <font color="#0000ff">#.............................. alle (eigene) *.h Dateien des Projekt</font>
<font color="#804040">12</font> <font color="#0000ff"># vom QtDesigner generierte HEADER</font>
<font color="#804040">13</font> <font color="#0000ff"># muessen nicht deklariert werden,</font>
<font color="#804040">14</font> <font color="#0000ff"># wenn die *.ui Datei bereits bei</font>
<font color="#804040">15</font> <font color="#0000ff"># INTERFACES angegeben wurde</font>
<font color="#804040">16</font> HEADERS =
<font color="#804040">17</font>
<font color="#804040">18</font> <font color="#0000ff">#............................ alle (eigene) *.cpp Dateien des Projekt</font>
<font color="#804040">19</font> <font color="#0000ff"># vom QtDesigner generierte SOURCE</font>
<font color="#804040">20</font> <font color="#0000ff"># muessen nicht deklariert werden,</font>
<font color="#804040">21</font> <font color="#0000ff"># wenn die *.ui Datei bereits bei</font>
<font color="#804040">22</font> <font color="#0000ff"># INTERFACES angegeben wurde</font>
<font color="#804040">23</font> SOURCES = main.cpp
<font color="#804040">24</font>
<font color="#804040">25</font> <font color="#0000ff">#................................................. DEFINE Anweisungen</font>
<font color="#804040">26</font> DEFINES =
<font color="#804040">27</font>
<font color="#804040">28</font> <font color="#0000ff">#.............................. wie soll die Binary spaeter heissen ?</font>
<font color="#804040">29</font> TARGET = QMainWindow
<font color="#804040">30</font>
<font color="#804040">31</font> <font color="#0000ff">#........................ bestimmte Konfigurationen fuer Linux / Unix</font>
<font color="#804040">32</font> unix:LIBS =
<font color="#804040">33</font> unix:INCLUDEPATH = $(QTDIR)/include
<font color="#804040">34</font> unix:TMAKE_UIC = $(QTDIR)/bin/uic
<font color="#804040">35</font>
<font color="#804040">36</font> <font color="#0000ff">#............................. bestimmte Konfigurationen fuer Windows</font>
<font color="#804040">37</font> win32:INCLUDEPATH = $(QTDIR)/include
<font color="#804040">38</font> win32:LIBS = $(QTDIR)/lib/qt-mt230nc.lib \
<font color="#804040">39</font> $(QTDIR)/lib/qtmain.lib
<font color="#804040">40</font> win32:TMAKE_CFLAGS = -MD -DQT_DLL -DQT_THREAD_SUPPORT -DNO_DEBUG
<font color="#804040">41</font> win32:TMAKE_CXXFLAGS = -MD -DQT_DLL -DQT_THREAD_SUPPORT -DNO_DEBUG
<font color="#804040">42</font> win32:TMAKE_UIC = $(QTDIR)\bin\uic.exe
Listing 2: QMainWindow.pro (tmake Konfigurationsdatei)

Ein Aufruf von tmake -o Makefile HelloWorld.pro erstellt aus der Datei HelloWorld.pro ein passendes Makefile. Dieses Makefile kann dann mit make (GNU/Linux bzw. UNIX) oder nmake (Windows mit Visual C++) aufgerufen werden.

Literatur

Für weitere Literatur sei neben der Qt-Online-Dokumentation auf das Buch von Helmut Herold7 verwiesen.

Wer sich stattdessen mehr mit der Programmierung von KDE-Applikationen beschäftigen möchte, dem sei das Buch von Burkhard Lehner8 empfohlen.

Verweise im Text

1 GNU: gcc v2.95.x
http://www.gnu.org/software/gcc/gcc.html

2 Trolltech: Qt v2.3.0 für X11 Systeme
ftp://ftp.trolltech.com/qt/source/qt-x11-2.3.0.tar.gz

3 Trolltech: tmake v1.7
4 ftp://ftp.trolltech.com/freebies/tmake/tmake-1.7.tar.gz

Microsoft: Visual C++ v6.0
5 http://www.eu.microsoft.com/germany/produkte/overview.asp?siteid=755

Microsoft Visual C++ v6.0 Standard Edition
http://www.amazon.de/exec/obidos/ASIN/B00004U721/marcbackccecke/302-5339693-4775249

6 Trolltech: Qt v2.3.0 (non commercial edition) für Win32
ftp://ftp.trolltech.com/qt/non-commercial/QTWin230-NonCommercial.exe

7 Helmut Herold;
Das Qt Buch - Portable GUI-Programmierung unter Linux/UNIX/Windows
SuSE Press 2001; ISBN 3-934678-76-9
http://www.suse.de/de/products/books/data/data_buecher/3_934678_76_9.html

8 Burkhard Lehner;
KDE- und Qt-Programmierung, 2. aktualisierte Auflage
Addison-Wesley 2001; ISBN 3-8273-1753-3
http://www.addison-wesley.de/projector/projector.asp?page=bookdetails&isbn=3827317533

  • Dieses Werk wurde unter der GNU Free Documentation License veröffentlicht. Das Kopieren, Verbreiten und/oder Modifizieren ist erlaubt unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder einer späteren Version, veröffentlicht von der Free Software Foundation. - Weitere Informationen
Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Newsletter
Neue Nachrichten