Kapitel 33. Hilfestellung

Dieses Kapitel deckt einen nicht offensichtlichen Aspekt qualitativ hochwertiger GUIs auf — Benutzerhilfe als verstecktes Tool zur Steigerung von Vertrauen und Arbeitsgeschwindigkeit. Hier wird ein praktischer Ansatz offenbart, der es ermöglicht, die Oberfläche von einem Widget-Set in einen begleitenden Assistenten zu verwandeln. Sie erfahren das Geheimnis, warum professionelle Entwickler dem Hilfesystem nicht weniger Aufmerksamkeit schenken als der Architektur.

Es werden drei Hilfe-Ebenen behandelt — von knappen Tooltips bis zur vollwertigen Online-Hilfe. Es wird gezeigt, wie man mit QEvent::ToolTip, QTextBrowser und dem externen Qt Assistant den spürbaren Effekt “die Anwendung erklärt sich selbst” erzielt. Nur wenige Entscheidungen — und die Oberfläche beginnt für Sie zu arbeiten.

Dieses Kapitel zu überspringen bedeutet, die User Experience auf dem Niveau “wie es kommt” zu belassen.

Das Kapitel enthält Code-Beispiele, die sofort einsatzbereit sind.

Selbstüberprüfung zum Kapitel

Welche drei Arten von Hilfe unterscheidet man in Qt-Anwendungen?Antwort
Richtige Antwort: Tooltip, “Was ist das?”-Hilfe und Hilfesystem (Online Help).
Warum ist es nicht empfehlenswert, Tooltips für Elemente mit offensichtlichem Zweck zu verwenden?Antwort
Richtige Antwort: Die Verwendung von Tooltips verliert ihren Sinn, wenn die Erklärung überflüssig ist — die Wiederholung der Button-Beschriftung im Tooltip fügt keine Informationen hinzu und lenkt den Benutzer nur ab.
Wie entfernt man einen Tooltip aus einem Widget?Antwort
Richtige Antwort: Man muss der Methode setToolTip() einen leeren String übergeben.
Warum wird im Beispiel zur Erstellung eines eigenen Tooltip-Fensters die Methode event() überschrieben?Antwort
Richtige Antwort: Um das Event vom Typ QEvent::ToolTip abzufangen und es auf eigene Weise zu behandeln, indem ein benutzerdefiniertes Fenster anstelle des Standard-Tooltips angezeigt wird.
Warum wird im Beispiel mit benutzerdefiniertem Tooltip QTimer::singleShot(3000, …) verwendet?Antwort
Richtige Antwort: Das Tooltip-Fenster muss nach einer bestimmten Zeit (3 Sekunden) verschwinden, um die Oberfläche nicht zu überladen und dem Standard-Tooltip-Verhalten zu folgen.
Welche Klasse wird für die Implementierung eines Hilfe-Navigators mit HTML-Unterstützung verwendet?Antwort
Richtige Antwort: QTextBrowser — sie verfügt über alles Notwendige zur Anzeige von Text im HTML-Format mit Navigationsunterstützung.
Warum werden im HelpBrowser-Beispiel die Signale backwardAvailable(bool) und forwardAvailable(bool) mit den Slots setEnabled(bool) der Buttons verbunden?Antwort
Richtige Antwort: Dies ermöglicht es, die Navigationsbuttons automatisch aktiv oder inaktiv zu machen, abhängig vom Vorhandensein der Navigationshistorie (ob es wohin zurück oder vorwärts zu gehen gibt).
Was passiert, wenn man vergisst, die Methode show() für das benutzerdefinierte Tooltip-Fenster aufzurufen?Antwort
Richtige Antwort: Das Tooltip-Fenster wird für den Benutzer nicht sichtbar sein, obwohl alle anderen Operationen (Positionseinstellung, Text) korrekt ausgeführt werden.
Warum wird für das Hilfesystem das HTML-Format empfohlen?Antwort
Richtige Antwort: HTML ermöglicht das Einbinden von Grafiken, Links, Textformatierung, und es gibt viele Editoren für seine Erstellung, einschließlich der Möglichkeit zur manuellen Bearbeitung.
Wofür wird die Methode setSearchPaths() in QTextBrowser verwendet?Antwort
Richtige Antwort: Sie legt die Liste der Pfade für die Dokumentensuche fest, in denen QTextBrowser beim Übergang über Links nach Hilfedateien sucht.
Welcher Parameter wird beim Start von Qt Assistant verwendet, um den Fernsteuerungsmodus zu aktivieren?Antwort
Richtige Antwort: Der Parameter -enableRemoteControl aktiviert den Fernsteuerungsmodus von Qt Assistant aus der Anwendung.
Was gibt die Funktion launchAssistant() zurück, wenn die ausführbare Datei assistant nicht im PATH gefunden wird?Antwort
Richtige Antwort: Die Funktion gibt false zurück, da QProcess::startDetached() den Prozess nicht starten kann und false zurückgibt.
Warum wird im MyWidget-Konstruktor Qt::ToolTip als Fenstertyp verwendet?Antwort
Richtige Antwort: Dieses Flag erstellt ein Fenster ohne Rahmen, charakteristisch für Tooltips, was visuell dem Standard-Tooltip-Verhalten entspricht.

Praktische Aufgaben

Einfaches Niveau

Widget mit Tooltips
Erstellen Sie eine Anwendung mit einem Fenster, das drei Buttons enthält: “Speichern”, “Abbrechen” und “Hilfe”. Fügen Sie für jeden Button einen Tooltip hinzu, der seine Funktion erklärt. Für den “Hilfe”-Button verwenden Sie einen mehrzeiligen HTML-Tooltip mit Formatierung (Überschrift und Liste der Möglichkeiten).
Hinweise: Verwenden Sie die Methode setToolTip() zum Setzen von Tooltips. Für HTML-Formatierung können Sie Tags wie <h3>, <ul>, <li> verwenden. Platzieren Sie die Buttons mit QHBoxLayout. Vergessen Sie nicht, dass Tooltips für Buttons mit offensichtlichem Zweck Informationen hinzufügen sollten, nicht den Text wiederholen.

Mittleres Niveau

Benutzerdefiniertes Tooltip-Fenster mit Bild
Erstellen Sie ein Widget, das beim Bewegen des Mauszeigers ein benutzerdefiniertes Tooltip-Fenster anzeigt, das nicht nur Text, sondern auch ein kleines Bild (z.B. ein Icon) enthält. Der Tooltip soll nach 5 Sekunden automatisch ausgeblendet werden. Implementieren Sie die Möglichkeit, die Anzeigedauer über einen Konstruktorparameter zu ändern.
Hinweise: Erben Sie von QWidget und überschreiben Sie die Methode event(). Verwenden Sie zum Erstellen eines Fensters mit Bild QLabel mit der Methode setPixmap(). Verwenden Sie QHBoxLayout zum Platzieren von Icon und Text nebeneinander. Vergessen Sie nicht, das Flag Qt::ToolTip für das Fenster zu setzen. Speichern Sie die Anzeigezeit als Klassenmember.

Schwieriges Niveau

Hilfesystem mit Suche und Navigation
Erstellen Sie ein vollwertiges Hilfesystem basierend auf QTextBrowser mit zusätzlichen Funktionen: Navigationsbuttons (zurück, vorwärts, home), Suchfeld zur Inhaltsfilterung und Lesezeichenliste. Bereiten Sie mehrere HTML-Seiten mit Cross-Links vor, einschließlich Hauptseite (index.html) und 2-3 thematische Seiten. Implementieren Sie das Speichern und Laden von Lesezeichen zwischen Sitzungen.
Hinweise: Fügen Sie neben QTextBrowser und Navigationsbuttons QLineEdit für die Suche und QListWidget für Lesezeichen hinzu. Verwenden Sie die Methode find() in QTextBrowser für die Textsuche. Speichern Sie für Lesezeichen die URL der aktuellen Seite mit source(). Zum Speichern zwischen Sitzungen verwenden Sie QSettings. Erstellen Sie Ressourcendateien (.qrc) für HTML-Seiten. Verwenden Sie das Signal sourceChanged() zum Tracking der Navigation.

💬 Beteiligen Sie sich an der Diskussion!

Haben Sie die Hilfesysteme in Qt gemeistert? Haben Sie Fragen dazu, wann einfache Tooltips und wann ein vollwertiges Hilfesystem zu erstellen ist?

Vielleicht haben Sie interessante Lösungen für benutzerdefinierte Tooltips oder Erfahrung mit der Integration von Qt Assistant?

Teilen Sie Ihre Erkenntnisse, stellen Sie Fragen oder helfen Sie anderen Lesern, ihre Anwendungen benutzerfreundlicher zu machen!

Leave a Reply

Your email address will not be published. Required fields are marked *