Development/Architecture/KDE4/Providing Online Help (de): Difference between revisions

    From KDE TechBase
    (Page created and translated)
     
    m (Text replace - "<code cppqt3>" to "<syntaxhighlight lang="cpp-qt">")
    Line 13: Line 13:


    Aus der Sicht des Programmierers, bietet Qt eine einfach zu benutzende API für die Online Hilfe. Um einen Tooltip einem Widget zuzuordnen, benutze einfache die  setToolTip() Methode.
    Aus der Sicht des Programmierers, bietet Qt eine einfach zu benutzende API für die Online Hilfe. Um einen Tooltip einem Widget zuzuordnen, benutze einfache die  setToolTip() Methode.
    <code cppqt3>
    <syntaxhighlight lang="cpp-qt">
    widget->setToolTip(i18n("This widget does something."))
    widget->setToolTip(i18n("This widget does something."))
    </code>
    </code>
    Line 19: Line 19:
    Wenn die Menüs und Werkzeugleisten mit der [[../Action Pattern|action pattern]] erzeugt werden, wird die Zeichenkette für den Tooltip aus dem ersten Argument des [http://api.kde.org/4.x-api/kdelibs-apidocs/kdeui/html/classKAction.html KAction] Konstruktors abgeleitet:
    Wenn die Menüs und Werkzeugleisten mit der [[../Action Pattern|action pattern]] erzeugt werden, wird die Zeichenkette für den Tooltip aus dem ersten Argument des [http://api.kde.org/4.x-api/kdelibs-apidocs/kdeui/html/classKAction.html KAction] Konstruktors abgeleitet:


    <code cppqt3>
    <syntaxhighlight lang="cpp-qt">
    action = new KAction(i18n("&Delete"), "editdelete",
    action = new KAction(i18n("&Delete"), "editdelete",
                         SHIFT+Key_Delete, actionCollection(), "del")
                         SHIFT+Key_Delete, actionCollection(), "del")
    Line 25: Line 25:
    Hier ist es auch möglich, einen Text zuzuordnen, der in der Statuszeile angezeigt wird, wenn der entsprechende Menüeintrag ausgewählt wird.
    Hier ist es auch möglich, einen Text zuzuordnen, der in der Statuszeile angezeigt wird, wenn der entsprechende Menüeintrag ausgewählt wird.


    <code cppqt3>
    <syntaxhighlight lang="cpp-qt">
    action->setStatusText(i18n("Deletes the marked file"))
    action->setStatusText(i18n("Deletes the marked file"))
    </code>
    </code>
    Line 31: Line 31:
    Die API für die "What's this?" Hilfe ist sehr ähnlich. In Diaglogen, benutze folgenden Code:
    Die API für die "What's this?" Hilfe ist sehr ähnlich. In Diaglogen, benutze folgenden Code:


    <code cppqt3>
    <syntaxhighlight lang="cpp-qt">
    widget->setWhatsThis(i18n("<qt>This demonstrates <b>Qt</b>'s"
    widget->setWhatsThis(i18n("<qt>This demonstrates <b>Qt</b>'s"
                             " rich text engine.<ul>"
                             " rich text engine.<ul>"
    Line 40: Line 40:


    Für Menüeinträge benutze
    Für Menüeinträge benutze
    <code cppqt3>
    <syntaxhighlight lang="cpp-qt">
    action->setWhatsThis(i18n("Deletes the marked file"))
    action->setWhatsThis(i18n("Deletes the marked file"))
    </code>
    </code>
    Line 47: Line 47:
    [http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/classKToolInvocation.html KToolInvocation] Klasse abgekapselt. Um das Handbuch deiner Applikation anzuzeigen, muß nur die statische Methode aufgerufen werden:
    [http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/classKToolInvocation.html KToolInvocation] Klasse abgekapselt. Um das Handbuch deiner Applikation anzuzeigen, muß nur die statische Methode aufgerufen werden:


    <code cppqt3>
    <syntaxhighlight lang="cpp-qt">
    KToolInvocation::invokeHelp()
    KToolInvocation::invokeHelp()
    </code>
    </code>

    Revision as of 20:35, 29 June 2011


    Development/Architecture/KDE4/Providing Online Help


    KDE Architecture - Providing online help

    Ein Programm einfach und intuitiv benutzbar zu machen, umfasst eine weite Bandbreite von Einrichtungen, die man im Allgemeinen als Online Hilfe bezeichnet. Online Hilfe hat meherer teilweise widersprechende Ziele: Auf der einen Seite soll es den Benutzern Antworten auf die Frage "Wie kann ich eine bestimmte Aufgabe erledigen?" geben, auf der anderen seite sollte es dem Benutzer helfen, die Applikation zu erforschen und neue, bisher unbekannte Funktionen zu finden, die er oder sie noch nicht kannten. Es ist wichtig zu erkennen, dass dieses nur erreicht werden kann, indem man mehere Ebenen der Hilfe anbietet:

    • Tooltips sind kleine Bezeichner, die erscheinen, wenn sich die Maus einige Zeit über Schnittstellenelementen befindet. Diese sind besonders für Werkzeugleisten wichtig, wo die Icons nicht immer ausreichend erklären, was ein bestimmter Knopf bewirkt.
    • "What's this?" (Was ist das?) Hilfe ist üblicherweise eine längere und ausführlichere Erklärung eines Widget oder eines Menüeintrages. In Dialogen kann es auf zwei Arten aufgerufen werden: Entweder durch Drücken von Shift-F1 oder indem man auf das Fragezeichen in der Titelzeile klickt (letzters ist vom Window Manager abhängig). Der Maus Zeiger verwandelt sich in einen Pfeil mit Fragezeichen und das Hilfefenster erscheint, wenn der Benutzer das ihn interessierende Element anklickt. Die "What's this?" Hilfe für Menüeinträge wird üblicherweise über einen Knopf in der Werkzeugleiste aktiviert. Dieser zeigt einen Pfeil und ein Fragezeichen.
      Das Problem bei dieser Herangehensweise ist, dass der Benutzer nicht sehen kann, ob ein Widget eine Hilfe anbietet oder nicht. Wenn der Benutzer den Fragezeichenknopf aktiviert und dann keine Hilfe bekommt, wenn er ein Widget anklickt, wird er schnell frustriert werden.



    Der Vorteil der "What's this?" Hilfe, die von Qt und KDE zur Verfügung gestellt wird, ist, dass sie rich text beinhalten kann, zum Beispiel verschiedene Schriftarten, Fett- und Kursivschrift und sogar Bilder und Tabellen.

    QWhatsThis screenshot
    • Zu guter Letzt sollte jedes Programm ein Handbuch haben. Ein Handbuch wird normalerweise im khelpcenter betrachtet und über das Hilfe-Menü aktiviert. Das bedeutet, dass eine komplette zusätzliche Applikation sich öffnet und den Benutzer von seiner Arbeit ablenkt. Konsequenterweise sollte daher das Befragen des Handbuches nur notwednig sein, wenn die Tooltips und "What's this?" Hilfe nicht ausreichen. Natürlich hat ein Handbuch den Vorteil, dass es nicht nur einen einzelnen, isolierter Apsekt der Benutzerschnittstelle erklärt. Statt dessen erklärt es die Aspekte einer Applikation in einem größeren Kontext. Handbücher für KDE werden mit der DocBook markup language geschrieben.

    Aus der Sicht des Programmierers, bietet Qt eine einfach zu benutzende API für die Online Hilfe. Um einen Tooltip einem Widget zuzuordnen, benutze einfache die setToolTip() Methode. <syntaxhighlight lang="cpp-qt"> widget->setToolTip(i18n("This widget does something."))

    Wenn die Menüs und Werkzeugleisten mit der action pattern erzeugt werden, wird die Zeichenkette für den Tooltip aus dem ersten Argument des KAction Konstruktors abgeleitet:

    <syntaxhighlight lang="cpp-qt"> action = new KAction(i18n("&Delete"), "editdelete",

                        SHIFT+Key_Delete, actionCollection(), "del")
    

    Hier ist es auch möglich, einen Text zuzuordnen, der in der Statuszeile angezeigt wird, wenn der entsprechende Menüeintrag ausgewählt wird.

    <syntaxhighlight lang="cpp-qt"> action->setStatusText(i18n("Deletes the marked file"))

    Die API für die "What's this?" Hilfe ist sehr ähnlich. In Diaglogen, benutze folgenden Code:

    <syntaxhighlight lang="cpp-qt"> widget->setWhatsThis(i18n("<qt>This demonstrates Qt's"

    " rich text engine.

      " "
    • Foo
    • " "
    • Bar
    • " "

    </qt>"))

    Für Menüeinträge benutze <syntaxhighlight lang="cpp-qt"> action->setWhatsThis(i18n("Deletes the marked file"))

    Der Aufruf von khelpcenter wird in der KToolInvocation Klasse abgekapselt. Um das Handbuch deiner Applikation anzuzeigen, muß nur die statische Methode aufgerufen werden:

    <syntaxhighlight lang="cpp-qt"> KToolInvocation::invokeHelp()

    Dadurch wird die erste Seite mit dem Inhaltverzeichnis dargestellt. Wenn du nur einen bestimmten Abschnitt des Handbuches anzeigen willst, kannst du ein zusätzliches Argument an invokeHeko() übergeben, welches den Anchor festlegt, zu dem der Browser springen soll.


    Ursprünglicher Autor (des englischen Artikels): Bernd Gehrmann