Jürgen Wolf Qt 4 - GUI-Entwicklung mit C++ Das umfassende Handbuch Galileo Press
Vorwort Warum Qt? Voraussetzungen für Qt Ziel und Zielgruppe des Buches Schnellübersicht zum Buch Danksagung 11 11 12 12 13 1 -Einstieg in Q 1.1 Was ist Qt? 15 1.2 Lizenzierung ' 1.3 Qt installieren 1.3.1 Linux/Unix und Mac OS X 1.3.2 MS-Windows (XP/Vista) 19 20 1.4 Hallo Welt mit Qt 1.4.1 Ein ausführbares Qt-Programm entwickeln 22 1.4.2 Das Programm starten 17 18 24 2 Signale und Slots 2.1 Grundlagen 2.1.1 Signale und Slots ermitteln 30 2.1.2 Gegenseitiges Signal-und Slot-Konzept 37 2.1.3 Argumentenlisten von Signal-Slot-Verbindungen 39 2.1.4 Eigene Klasse mit Signalen und Slots definieren bzw. erweitern 40 2.1.5 Widget mit eigenem Slot 2.1.6 Widget mit eigenem Signal 2.1.7 Zusammenfassung 28 46 49 53 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 55 55 58 60 62 63 5
3.4.3 QtNetwork 63 3.4.4 QtOpenGL 63 3.4.5 QtSql 63 3.4.6 QtSvg 64 3.4.7 QtXml 64 3.4.8 Qt3Support 65 3.4.9 Der Rest 65 3.5 Meta-Include-Headerdatei 65 \.mmmmmmi.\mmm fgg 4.1 Eigene Widget-Klassen erstellen 67 4.2 Widgets anordnen - das Layout 70 4.2.1 Grundlegende Layout-Widgets 70 4.3 Erstellen von Dialogen (QDialog) 96 4.3.1 Benutzerfreundlichkeit von Dialogen 106 4.4 Vorgefertigte Dialoge 109 4.4.1 QMessageBox - Nachrichtendialoge 110 4.4.2 QFileDialog-Dialoge zur Dateiauswahl 118 4.4.3 QlnputDialog- Eingabedialog 123 4.4.4 QFontDialog-Schriftauswahl 127 4.4.5 QColorDialog-Farbauswahl 128 4.4.6 QPrintDialog-Druckerdialog 129 4.4.7 Dialoge - Übersicht 129 4.5 Qt-Widgets 130 4.5.1 Buttons - Basisklasse QAbstractButton 130 4.5.2 Container-Widgets 152 4.5.3 Widgets zur Zustandsanzeige 179 4.5.4 Widgets für die Eingabe 196 4.5.5 Item-View-Subklassen verwenden (Ansichts-Klassen)... 259 4.5.6 Exkurs: Model-View-Controller (MVC) 297 4.5.7 Vordefinierte Modelle 298 4.6 Online-Hilfen 311 4.6.1 Statuszeilentipp 311 4.6.2 Tooltips 311 4.6.3 Direkthilfe 312 4.6.4 Einfache Dokumentation mit QTextBrowser 314 4.6.5 QAssistantClient-Qt Assistant weiterverwenden 316 6
Qt-Hauptfenster 5.1 Aufbau eines Hauptfensters 317 5.2 Die Klasse QMainWindow 318 5.2.1 Flags für QMainWindow 320 5.2.2 Eine Menüleiste mit der Klasse QMenu und QMenuBar 321 5.2.3 Eine Statusleiste mit der Klasse QStatusBar 339 5.2.4 Eine Werkzeugleiste mit der Klasse QToolBar 346 5.2.5 Verschiebbare Widgets im Hauptfenster mit QDockWidget 352 5.2.6 Einstellungen der Anwendung speichern mit QSettings 357 5.2.7 Anwendungen mit MDI-Fenster erstellen (Klasse QWorkspace) 377 5.2.8 Übersicht zu den Methoden der Klasse QMainWindow 391 5.3 Fenster aufteilen - QSplitter 394 5.3.1 Splitter-Handle - QSplitterHandle 398 5.4 ScrollingArea-QScrollArea 403 Ein-/Ausgabe von Daten 6.1 Schnittstelle für alle E/A-Geräte - QIODevice 411 6.2 Die Datei-QFile 415 6.2.1 Temporäre Datei - QTemporaryFile 423 6.3 Streams 425 6.3.1 Binäre Daten -QDataStream 425 6.3.2 Text Daten - QTextStream 438 6.4 Der Puffer - QBuffer 455 6.5 Verzeichnisse -QDir 457 6.6 Datei-Informationen -QFilelnfo 466 6.7 Interprozesskommunikation - QProcess 474 6.8 Netzwerkkommunikation (Sockets) 489 6.8.1 QAbstractSocket 490 6.8.2 Das HTTP-Protokoll - QHttp 521 6.8.3 Das FTP-Protokol - QFtp 537 6.8.4 Ein Proxy - QNetworkProxy 553 6.9 Multithreads - QThread 554 6.9.1 QMutex 564 6.9.2 QMutexLocker 566 7
6.9.3 QReadWriteLock 567 6.9.4 QSemaphore 569 6.9.5 QWaitCondition 575 6.9.6 Datenstrukturen an den Thread binden - QThreadStorage 578 6.9.7 Ausblick 582 6.10 Relationale Datenbanken - QtSql 583 6.10.1 Die Treiber für QtSql 583 6.10.2 Ein Verbindung zur Datenbank herstellen - QSqlDatabase 585 6.10.3 SQL-Anweisungen ausführen - QSqlQuery 586 6.10.4 SQL-Anweisungen der höheren Ebene - QSqlTableModel 593 6.10.5 View-Klasse QTableView mit SQL verwenden 598 6.11 Klassen und Typen zum Speichern von Daten 601 6.11.1 Qt-eigene Typendefinitionen 601 6.11.2 QString 602 6.11.3 QChar 604 6.11.4 QByteArray 605 6.11.5 QVariant 606 6.11.6 Container und Algorithmen 606 6.12 Datum und Uhrzeit 618 7 Ereignisverarbeitung 7.1 Ereignisschleife (Event-Loop) 619 7.2 Ereignishandler neu implementieren 621 7.2.1 evento neu implementieren 627 7.3 Ereignisfilter implementieren 628 7.4 Eingreifen in die Ereignisverwaltung 631 7.4.1 QApplication::notify() 631 7.4.2 eventfiltero - Ereignisfilter 632 7.4.3 evento 632 7.4.4 Ereignishandler 632 7.4.5 Weitergabe von Ereignissen 632 7.5 Ereignisverarbeitung für Threads 633 7.6 Ereignisverarbeitung optimieren 636 8
8 Drag & Drop und Zwischenablage 639 8.1 Kodierung mit QMimeData 640 8.1.1 Drop-Seite 643 8.1.2 Drag-Seite 648 8.1.3 Benutzerdefinierte MIME-Typen für das Drag & Drop 651 8.2 Zwischenablage - QClipboard 653 9.1 Zeichnen mit Qt - QPainter 657 9.1.1 QPaintEvent 658 9.1.2 Einstellungen 662 9.1.3 Transformation des Koordinatensystems 665 9.2 Bildbearbeitung-Qlmage 674 9.2.1 Speicher- und Bildformate 675 9.2.2 Bild laden und speichern 675 9.2.3 Bildinformationen und Bild-Transformation 676 9.2.4 Pixel auslesen 677 9.3 Drucken mit Qt- QPrinter 683 9.4 OpenGL mit Qt 693 9.4.1 Spezifikation 694 9.4.2 Anwendungsbeispiele in der Praxis von OpenGL 694 9.4.3 Portabilität 695 9.4.4 OpenGL mit Qt anwenden 695 9.5 Vektorgrafik - QSvgWidget 702 10 XML 10.1 SAX-API von Qt verwenden 706 10.1.1 Default-Handler implementieren 708 10.2 DOM-API von Qt verwenden 713 10.2.1 Elemente suchen 724 10.2.2 Weiteres 725 11 Internationale Anwendungen.. 11.1 Voraussetzung für eine Übersetzung 727 11.1.1 Fehlervermeidung und Kommentare 728 11.2 Übersetzen mit Linguist 729 9
11.3 Übersetzung verwenden 11.4 char-arrays internationalisieren 734 12.1 Dynamische Bibliotheken erstellen 737 12.1.1 Dynamische Bibliothek dynamisch nachladen 739 12.1.2 Pluginserstellen 742 12.2 Embedded Progamming mit Qtopia 743 12.3 Debugging-Ausgabe 12.3.1 Fehlerbehebung 74R 12.4 QtStyles J 748 12.5 QApplication, QCoreApplication und die Kommandozeile 750 12.6 Anwendungen mit dem Qt Designer erstellen 752 12.6.1 Ein Dialog-Fenster erstellen 753 12.6.2 Ein Hauptfenster mit dem Designer entwerfen 775 12.7 Das Qt-Ressourcen-System 78,- Index 787 10