Inhaltsverzeichnis
1 Einstieg in Qt
1.1 Was ist Qt
1.2 Lizenzierung
1.4 Qt installieren
1.4.1 Linux/Unix und Mac OS X
1.4.2 MS-Windows (XP/Vista)
1.5 Hallo Welt mit Qt
1.5.1 Ein ausführbares Qt-Programm machen
2 Signale und Slots
2.1 Grundlagen
2.1.1 Signale und Slots ermitteln
2.1.2 Gegenseitiges Signal-und-Slot-Konzept
2.1.3 Argumentenlisten von Signal-Slot-Verbindungen
2.1.4 Eigene Klasse mit Signalen und Slots definieren bzw. erweitern
MOC – Meta Object Compiler
2.1.5 Widget mit eigenem Slot
2.1.6 Widget mit eigenem Signal
2.1.7 Zusammenfassung
3 Basisklassen und Bibliotheken von Qt
3.1 Basisklasse: QObject
3.2 Qt-Klassenhierarchie
3.3 Speicherverwaltung von Objekten
3.4 Programm-Bibliotheken von Qt
3.4.1 QtCore
3.4.2 QtGui
3.4.3 QtNetwork
3.4.4 QtOpenGL
3.4.5 QtSql
3.4.6 QtSvg
3.4.7 QtXml
3.4.8 Qt3Support
3.4.9 Der Rest
3.5 Meta-Include-Headerdatei
4 Dialoge, Layout und Qt-Widgets
4.1 Eigene Widget-Klassen erstellen
4.2 Widgets anordnen – Das Layout
4.2.1 Grundlegende Layout-Widgets
QGridLayout, QVBoxLayout und QHBoxLayout
Allgemeine Methoden für das Layout (QLayout)
Methoden für das Layout (QBoxLayout) – Horizontales und vertikales Layout
Methoden für das Layout (QGridLayout) – Raster-Layout
Stapel-Layout (QStackedLayout)
Weitere indirekte Layout-Klassen (QSpacerItem und QWidgetItem)
Qt::Alignment
Eigenen Layout-Manager erstellen
Manuelles Layout
4.3 Erstellen von Dialogen (QDialog)
4.3.1 Benutzerfreundlichkeit von Dialogen
4.4 Vorgefertigte Dialoge
4.4.1 QMessageBox – Nachrichten-Dialoge
Nachrichten-Dialog auswerten
Eigene Schaltflächen für QMessageBox
4.4.2 QFileDialog - Dialoge zur Dateiauswahl
4.4.3 QInputDialog - Eingabedialog
4.4.4 QFontDialog – Schriftauswahl
4.4.5 QColorDialog – Farbauswahl
4.4.6 QPrintDialog – Druckerdialog
4.4.7 Dialoge – Übersicht
4.5 Qt-Widgets
4.5.1 Buttons (Basisklasse QAbstractButton)
QPushButton
QCheckBox
QRadioButton
QToolButton
QButtonGroup
4.5.2 Container-Widgets
QGroupBox
QTabWidget
QFrame
QToolBox
4.5.3 Widgets zur Zustandsanzeige
QProgressBar (QProgressDialog)
QLCDNumber
QLabel
4.5.4 Widgets für die Eingabe
QAbstractSlider
QLineEdit
QComboBox
QAbstractSpinBox
QTextEdit
QCalendarWidget
4.5.5 Item-View-Subklassen verwenden (Ansichts-Klassen)
QTableWidget und QTableWidgetItem
QListWidget und QListWidgetItem
QTreeWidget und QTreeWidgetItem
4.5.6 Exkurs: Model-View-Controller (MVC)
4.5.7 Vordefinierte Modelle
QDirModel – Verzeichnishierarchien anzeigen
QStringListModel – Stringlisten-Modell
QSortFilterProxyModel – Sortieren und Filtern von Daten
Eigene Modelle und benutzerdefinierte Delegates
4.6 Online-Hilfen
4.6.1 Statuszeilentipp
4.6.2 Tooltipps
4.6.3 Direkthilfe
4.6.4 Einfache Dokumentation mit QTextBrowser
4.6.5 QAssistantClient – Qt Assistant weiterverwenden
5 Qt-Hauptfenster
5.1 Aufbau eines Hauptfensters
5.2 Die Klasse QMainWindow
5.2.1 Flags für QMainWindow
5.2.2 Ein Menüleiste mit der Klasse QMenu und QMenuBar
QMenuBar
QMenu
QAction
QActionGroup
5.2.3 Ein Statusleiste mit der Klasse QStatusBar
Temporäre Meldungen in der Statusleiste
Normale Meldungen in der Statusleiste
Permanente Meldungen in der Statusleiste
Methoden, Signale und Slots von QStatusBar
5.2.4 Ein Werkzeugleiste mit der Klasse QToolBar
5.2.5 Verschiebbare Widgets im Hauptfenster mit QDockWidget
5.2.6 Einstellungen der Anwendung speichern mit QSettings
Methoden der Klasse QSettings
5.2.7 Anwendungen mit MDI-Fenster erstellen (Klasse QWorkspace)
5.2.8 Übersicht zu den Methoden der Klasse QMainWindow
5.3 Fenster aufteilen – QSplitter
5.3.1 Splitter-Handle – QSplitterHandle
5.4 Scrolling Area – QScrollArea
6 Ein-/Ausgabe von Daten
6.1 Schnittstelle für alle E/A-Geräte – QIODevice
6.2 Die Datei – QFile
6.2.1 Temoräre Datei – QTemporaryFile
6.3 Streams
6.3.1 Binäre Daten – QDataStream
6.3.2 Text Daten – QTextStream
6.4 Der Puffer – QBuffer
6.5 Verzeichnisse - QDir
6.6 Dateiinformationen – QFileInfo
6.7 Interprozesskommunikation – QProcess
6.8 Netzwerkkommunikation (Sockets)
6.8.1 QAbstractSocket
QTcpSocket
QTcpServer
QUdpSocket
6.8.2 Das HTTP-Protokol – QHttp
QHttpHeader (QHttpRequestHeader und QHttpResponseHeader)
QUrl
Programmbeispiel – HTTP-Client
6.8.3 Das FTP-Protokol – QFtp
6.8.4 Ein Proxy – QNetworkProxy
6.9 Multithreads – QThread
6.9.1 QMutex
6.9.2 QMutexLocker
6.9.3 QReadWriteLock
6.9.4 QSemaphore
6.9.5 QWaitCondition
6.9.6 Datenstrukturen an den Thread binden – QThreadStorage
6.9.7 Ausblick
forever
Weitere Beispiele
6.10 Relationale Datenbanken – QtSql
6.10.1 Die Treiber für QtSql
6.10.2 Ein Verbindung zu Datenbank herstellen - QSqlDatabase
Mehrere Datenbankverbindungen
6.10.3 SQL-Anweisungen ausführen – QSqlQuery
Daten hinzufügen
Daten ändern oder löschen
Daten abfragen
Transaktionen
Listing
6.10.4 SQL-Anweisungen der höheren Ebene – QSqlTableModel
Daten hinzufügen
Daten ändern
Daten löschen
Daten abfragen
Listing
6.10.5 View-Klasse QTableView mit SQL verwenden
6.11 Klassen und Typen zum Speichern von Daten
6.11.1 Qt-eigene Typendefinitionen
6.11.2 QString
QStringList
6.11.3 QChar
6.11.4 QByteArray
6.11.5 QVariant
6.11.6 Container und Algorithmen
Sequentielle Container-Klassen
Assoziative Container-Klassen
Algorithmen
6.12 Datum und Uhrzeit
7 Ereignis-Verarbeitung
7.1 Ereignis-Schleife (Event-Loop)
7.2 Ereignishandler neu implementieren
7.2.1 event() neu implementieren
7.3 Ereignis-Filter implementieren
7.4 Eingreifen in die Ereignisverwaltung
7.4.1 QApplication::notify()
7.4.2 eventFilter() – Ereignisfilter
7.4.3 event()
7.4.4 Ereignishandler
7.4.5 Weitergabe von Ereignissen
7.5 Ereignisverarbeitung für Threads
7.6 Ereignisverarbeitung optimieren
8 Drag & Drop und Zwischenablage
8.1 Kodierung mit QMimeData
8.1.1 Drop-Seite
8.1.2 Drag-Seite
8.1.3 Benutzerdefinierte MIME-Typen für das Drag und Drop
8.2 Zwischenablage – QClipboard
9 Grafik und Drucken
9.1 Zeichnen mit Qt – QPainter
9.1.1 QPaintEvent
9.1.2 Einstellungen
Schrift
Pinsel
Stift
9.1.3 Transformation des Koordinatensystems
Scherung
Skalieren
Versetzen
Weiteres
9.2 Bildbearbeitung – QImage
9.2.1 Speicher- und Bildformate
9.2.2 Bild laden und speichern
9.2.3 Bildinformationen und Bild-Transformation
9.2.4 Pixel auslesen
9.3 Drucken mit Qt – QPrinter
9.4 OpenGL mit Qt
9.4.1 Spezifikation
MesaGL – Die OpenGL-Software-Emulation
9.4.2 Anwendungsbeispiele in der Praxis von OpenGL
9.4.3 Portabilität
9.4.4 Quellen um mehr über OpenGL zu erfahren
9.4.5 OpenGL mit Qt anwenden
9.5 Vektorgrafik – QSvgWidget
10 XML
10.1 SAX-API von Qt verwenden
10.1.1 Default-Handler implementieren
10.2 DOM-API von Qt verwenden
10.2.1 Elemente suchen
10.2.2 Weiteres
11 Internationale Anwendungen
11.1 Vorraussetzung für eine Übersetzung
11.1.1 Fehlervermeidung und Kommentare
11.2 Übersetzen mit Linguist
11.3 Übersetzung verwenden
11.4 char-Arrays internationalsieren
12 Weiteres zu Qt
12.1 Dynamische Bibliotheken erstellen
12.1.1 Dynamische Bibliothek dynamisch nachladen
12.1.2 Plug-ins erstellen
12.2 Embeeded Progamming mit Qtopia
12.3 Debugging-Ausgabe
12.3.1 Fehlerbehebung
12.4 Qt Styles
12.5 QApplication, QCoreApplication und die Kommandozeile
12.6 Anwendungen mit dem Qt Designer erstellen
12.6.1 Ein Dialog-Fenster erstellen
Designer-Datei in einer Qt-Anwendung verwenden
12.6.2 Ein Hauptfenster mit dem Designer entwerfen
Mit dem Designer erstelltes Hauptfenster verwenden
12.7 Das Qt-Ressourcen-System
1 Einstieg in Qt
1.1 Was ist Qt
1.2 Lizenzierung
1.4 Qt installieren
1.4.1 Linux/Unix und Mac OS X
1.4.2 MS-Windows (XP/Vista)
1.5 Hallo Welt mit Qt
1.5.1 Ein ausführbares Qt-Programm machen
2 Signale und Slots
2.1 Grundlagen
2.1.1 Signale und Slots ermitteln
2.1.2 Gegenseitiges Signal-und-Slot-Konzept
2.1.3 Argumentenlisten von Signal-Slot-Verbindungen
2.1.4 Eigene Klasse mit Signalen und Slots definieren bzw. erweitern
MOC – Meta Object Compiler
2.1.5 Widget mit eigenem Slot
2.1.6 Widget mit eigenem Signal
2.1.7 Zusammenfassung
3 Basisklassen und Bibliotheken von Qt
3.1 Basisklasse: QObject
3.2 Qt-Klassenhierarchie
3.3 Speicherverwaltung von Objekten
3.4 Programm-Bibliotheken von Qt
3.4.1 QtCore
3.4.2 QtGui
3.4.3 QtNetwork
3.4.4 QtOpenGL
3.4.5 QtSql
3.4.6 QtSvg
3.4.7 QtXml
3.4.8 Qt3Support
3.4.9 Der Rest
3.5 Meta-Include-Headerdatei
4 Dialoge, Layout und Qt-Widgets
4.1 Eigene Widget-Klassen erstellen
4.2 Widgets anordnen – Das Layout
4.2.1 Grundlegende Layout-Widgets
QGridLayout, QVBoxLayout und QHBoxLayout
Allgemeine Methoden für das Layout (QLayout)
Methoden für das Layout (QBoxLayout) – Horizontales und vertikales Layout
Methoden für das Layout (QGridLayout) – Raster-Layout
Stapel-Layout (QStackedLayout)
Weitere indirekte Layout-Klassen (QSpacerItem und QWidgetItem)
Qt::Alignment
Eigenen Layout-Manager erstellen
Manuelles Layout
4.3 Erstellen von Dialogen (QDialog)
4.3.1 Benutzerfreundlichkeit von Dialogen
4.4 Vorgefertigte Dialoge
4.4.1 QMessageBox – Nachrichten-Dialoge
Nachrichten-Dialog auswerten
Eigene Schaltflächen für QMessageBox
4.4.2 QFileDialog - Dialoge zur Dateiauswahl
4.4.3 QInputDialog - Eingabedialog
4.4.4 QFontDialog – Schriftauswahl
4.4.5 QColorDialog – Farbauswahl
4.4.6 QPrintDialog – Druckerdialog
4.4.7 Dialoge – Übersicht
4.5 Qt-Widgets
4.5.1 Buttons (Basisklasse QAbstractButton)
QPushButton
QCheckBox
QRadioButton
QToolButton
QButtonGroup
4.5.2 Container-Widgets
QGroupBox
QTabWidget
QFrame
QToolBox
4.5.3 Widgets zur Zustandsanzeige
QProgressBar (QProgressDialog)
QLCDNumber
QLabel
4.5.4 Widgets für die Eingabe
QAbstractSlider
QLineEdit
QComboBox
QAbstractSpinBox
QTextEdit
QCalendarWidget
4.5.5 Item-View-Subklassen verwenden (Ansichts-Klassen)
QTableWidget und QTableWidgetItem
QListWidget und QListWidgetItem
QTreeWidget und QTreeWidgetItem
4.5.6 Exkurs: Model-View-Controller (MVC)
4.5.7 Vordefinierte Modelle
QDirModel – Verzeichnishierarchien anzeigen
QStringListModel – Stringlisten-Modell
QSortFilterProxyModel – Sortieren und Filtern von Daten
Eigene Modelle und benutzerdefinierte Delegates
4.6 Online-Hilfen
4.6.1 Statuszeilentipp
4.6.2 Tooltipps
4.6.3 Direkthilfe
4.6.4 Einfache Dokumentation mit QTextBrowser
4.6.5 QAssistantClient – Qt Assistant weiterverwenden
5 Qt-Hauptfenster
5.1 Aufbau eines Hauptfensters
5.2 Die Klasse QMainWindow
5.2.1 Flags für QMainWindow
5.2.2 Ein Menüleiste mit der Klasse QMenu und QMenuBar
QMenuBar
QMenu
QAction
QActionGroup
5.2.3 Ein Statusleiste mit der Klasse QStatusBar
Temporäre Meldungen in der Statusleiste
Normale Meldungen in der Statusleiste
Permanente Meldungen in der Statusleiste
Methoden, Signale und Slots von QStatusBar
5.2.4 Ein Werkzeugleiste mit der Klasse QToolBar
5.2.5 Verschiebbare Widgets im Hauptfenster mit QDockWidget
5.2.6 Einstellungen der Anwendung speichern mit QSettings
Methoden der Klasse QSettings
5.2.7 Anwendungen mit MDI-Fenster erstellen (Klasse QWorkspace)
5.2.8 Übersicht zu den Methoden der Klasse QMainWindow
5.3 Fenster aufteilen – QSplitter
5.3.1 Splitter-Handle – QSplitterHandle
5.4 Scrolling Area – QScrollArea
6 Ein-/Ausgabe von Daten
6.1 Schnittstelle für alle E/A-Geräte – QIODevice
6.2 Die Datei – QFile
6.2.1 Temoräre Datei – QTemporaryFile
6.3 Streams
6.3.1 Binäre Daten – QDataStream
6.3.2 Text Daten – QTextStream
6.4 Der Puffer – QBuffer
6.5 Verzeichnisse - QDir
6.6 Dateiinformationen – QFileInfo
6.7 Interprozesskommunikation – QProcess
6.8 Netzwerkkommunikation (Sockets)
6.8.1 QAbstractSocket
QTcpSocket
QTcpServer
QUdpSocket
6.8.2 Das HTTP-Protokol – QHttp
QHttpHeader (QHttpRequestHeader und QHttpResponseHeader)
QUrl
Programmbeispiel – HTTP-Client
6.8.3 Das FTP-Protokol – QFtp
6.8.4 Ein Proxy – QNetworkProxy
6.9 Multithreads – QThread
6.9.1 QMutex
6.9.2 QMutexLocker
6.9.3 QReadWriteLock
6.9.4 QSemaphore
6.9.5 QWaitCondition
6.9.6 Datenstrukturen an den Thread binden – QThreadStorage
6.9.7 Ausblick
forever
Weitere Beispiele
6.10 Relationale Datenbanken – QtSql
6.10.1 Die Treiber für QtSql
6.10.2 Ein Verbindung zu Datenbank herstellen - QSqlDatabase
Mehrere Datenbankverbindungen
6.10.3 SQL-Anweisungen ausführen – QSqlQuery
Daten hinzufügen
Daten ändern oder löschen
Daten abfragen
Transaktionen
Listing
6.10.4 SQL-Anweisungen der höheren Ebene – QSqlTableModel
Daten hinzufügen
Daten ändern
Daten löschen
Daten abfragen
Listing
6.10.5 View-Klasse QTableView mit SQL verwenden
6.11 Klassen und Typen zum Speichern von Daten
6.11.1 Qt-eigene Typendefinitionen
6.11.2 QString
QStringList
6.11.3 QChar
6.11.4 QByteArray
6.11.5 QVariant
6.11.6 Container und Algorithmen
Sequentielle Container-Klassen
Assoziative Container-Klassen
Algorithmen
6.12 Datum und Uhrzeit
7 Ereignis-Verarbeitung
7.1 Ereignis-Schleife (Event-Loop)
7.2 Ereignishandler neu implementieren
7.2.1 event() neu implementieren
7.3 Ereignis-Filter implementieren
7.4 Eingreifen in die Ereignisverwaltung
7.4.1 QApplication::notify()
7.4.2 eventFilter() – Ereignisfilter
7.4.3 event()
7.4.4 Ereignishandler
7.4.5 Weitergabe von Ereignissen
7.5 Ereignisverarbeitung für Threads
7.6 Ereignisverarbeitung optimieren
8 Drag & Drop und Zwischenablage
8.1 Kodierung mit QMimeData
8.1.1 Drop-Seite
8.1.2 Drag-Seite
8.1.3 Benutzerdefinierte MIME-Typen für das Drag und Drop
8.2 Zwischenablage – QClipboard
9 Grafik und Drucken
9.1 Zeichnen mit Qt – QPainter
9.1.1 QPaintEvent
9.1.2 Einstellungen
Schrift
Pinsel
Stift
9.1.3 Transformation des Koordinatensystems
Scherung
Skalieren
Versetzen
Weiteres
9.2 Bildbearbeitung – QImage
9.2.1 Speicher- und Bildformate
9.2.2 Bild laden und speichern
9.2.3 Bildinformationen und Bild-Transformation
9.2.4 Pixel auslesen
9.3 Drucken mit Qt – QPrinter
9.4 OpenGL mit Qt
9.4.1 Spezifikation
MesaGL – Die OpenGL-Software-Emulation
9.4.2 Anwendungsbeispiele in der Praxis von OpenGL
9.4.3 Portabilität
9.4.4 Quellen um mehr über OpenGL zu erfahren
9.4.5 OpenGL mit Qt anwenden
9.5 Vektorgrafik – QSvgWidget
10 XML
10.1 SAX-API von Qt verwenden
10.1.1 Default-Handler implementieren
10.2 DOM-API von Qt verwenden
10.2.1 Elemente suchen
10.2.2 Weiteres
11 Internationale Anwendungen
11.1 Vorraussetzung für eine Übersetzung
11.1.1 Fehlervermeidung und Kommentare
11.2 Übersetzen mit Linguist
11.3 Übersetzung verwenden
11.4 char-Arrays internationalsieren
12 Weiteres zu Qt
12.1 Dynamische Bibliotheken erstellen
12.1.1 Dynamische Bibliothek dynamisch nachladen
12.1.2 Plug-ins erstellen
12.2 Embeeded Progamming mit Qtopia
12.3 Debugging-Ausgabe
12.3.1 Fehlerbehebung
12.4 Qt Styles
12.5 QApplication, QCoreApplication und die Kommandozeile
12.6 Anwendungen mit dem Qt Designer erstellen
12.6.1 Ein Dialog-Fenster erstellen
Designer-Datei in einer Qt-Anwendung verwenden
12.6.2 Ein Hauptfenster mit dem Designer entwerfen
Mit dem Designer erstelltes Hauptfenster verwenden
12.7 Das Qt-Ressourcen-System
