Errata
Trotz intensiver Bemühungen und Qualitätskontrollen unterlaufen manchmal Fehler. Damit Sie sich nicht unnötig herumärgern müssen, stellt diese Seite Fehler samt Richtigstellung dar.
Bisher bekannte Fehler
- Auf Seite 58 muss Aufbau von Includeguards #ifndef marke, #define marke, #endif lauten (Mit Dank an R. Czerny).
- Auf Seite 72 beschreibt der Text, dass Signale immer öffentlich sind. Dies trifft nur für ihre Verwendung mit connect() zu. Als C++-Membermethode sind sie protected (Danke an H.-R. Denzler).
- Auf Seite 98 fehlt im Beispiel ein #include <QApplication> (Mit Dank an G. Mueller).
- In Listing auf Seite 108 fehlt ein connect(action_new, SIGNAL(triggered(bool)), this, SLOT(newFile())); (Danke an T. Deppe)).
- Auf Seite 109 fehlt das Paste-Signal: void paste();; auf Seite 114 der korrespondierende Paste-Slot: void MainWindow::paste() { textEdit->paste(); } (Ebenfalls Dank an T. Deppe).
- Auf Seite 113 heißt es: "Ähnlich wie bei QDialogBox..." Gemeint ist der wenige Seiten vorher erwähnte QFileDialog.
- Auf Seite 117 ist lautet der Slot-Name nicht message() sondern showMessage(). Die Zeile muss als statusBar->showMessage(tr("Datei erfolgreich gespeichert")); lauten. Ebenso lautet der korrekte Name des Slots clear() clearMessage() (Mit Dank an U. Thormann).
- Die auf Seite 122 erwähnte überladene Methode von QMainWindow::addToolBar() existiert so nicht. Verwenden Sie statt dessen void QMainWindow::addToolBar ( Qt::ToolBarArea area, QToolBar * toolbar ) und generierenSie die das nötige QToolBar-Objekt manuell. (Danke an A. Massing)
- Auf Seite 126 sind die Beschreibungen für die Eigenschaften visible und enabled vertauscht (Mit Dank an R. Czerny).
- Auf Seite 128 wird behauptet, dass Enumerator-Werte stets Zweierpotenzen verwenden. Obwohl dies auf viele Enumeratoren in Qt zutrifft, ist es nicht bei allen der Fall, etwa beim QEvent-Enum.
- Ebenfalls auf Seite 128 muss es heissen "Um dem Benutzer das Schließen und Ablösen des Dockfenster vom Hauptfenster zu erlauben, ..." und nicht wie im Buch geschrieben "zu verbieten" (Danke an M. Glockenstein).
- S. 130: Die Methode setFloating() legt keine Policies fest, dies erledigt setFeatures(). Sie dient vielmehr dazu, das Widget in den Dockzustand zu versetzen (Mit Dank an M. Glockenstein).
- S.146: die Methode lautet setColumnStretch(), nicht addColumnStretch() (Danke an S. Nönning).
- Im Codebeispiel auf Seite 161 fehlt in der ersten Zeile die Instanzierung eines QApplication-Objektes: QApplication a(argc, argv); (Mit Dank an S. Nönning).
- Auf Seite 172 muss der der letzte Satz im letzten Absatz lauten "Wählt der Benutzer sie ab, unterdrückt.." (Danke an A. Lass).
- Im Codebeispiel auf Seite 188 sollte die vorletzte Zeile return QLCDNumber::event(e) (Danke an M. Glockenstein).
- In der Implementierung von prepareImageDrag() auf Seite 192 wird die nicht vorhandene Variable pngImage benutzt. Gemeint ist image. (Mit Dank an T. Pathmann)
- In dem Drop-Beispiel auf Seite 197/198 heißt es in Zeile 3 auf S. 198 if (pixmap() && !pixmap()->isNull()). Korrekterweise muss es heissen: if (!pix.isNull())... (Danke an M. Glockenstein)
- Seite 227, Zeile 2 von removeRows(): row+count-1 statt row-count-1. Weiter auf Seite 228, Zeile 4 von toString(): ab+= vor record.join() fehlt (Danke an M. Glockenstein).
- Auf Seite Seite 242 muss es in Zeile 4 des zweiten Absatzes "Anzahl der Zeilen" statt "Anzahl der Spalten" lauten (Danke an M. Glockenstein).
- Das sqlexample-Beispiel auf Seite 261 verwendet bindValue() mit nur einem Parameter. Es ist jedoch immer ein Platzhalter oder ein Integer zur Angabe der Reihenfolge erforderlich, wie in den anderen Beispielen auf der Seite dargestellt. Im Quellcode, der auf dieser Seite zum Download steht, ist das Beispiel bereits dahingehend korrigiert.
- S. 277: Die Punkte für den QRect(QPoint, QPoint)-Konstruktor liegen oben links und unten rechts (Danke an E. Wild)
© 2006-2009 Daniel Molkentin - Impressum