Frage

Ich experimentiere derzeit mit der Verwendung von OCaml und GTK zusammen (mit dem lablgtk verbindlich).Die Dokumentation ist jedoch nicht die beste, und obwohl ich herausfinden kann, wie die meisten Funktionen verwendet werden, muss ich die Notizbuchseiten nicht ändern (zu einer anderen Registerkarte wechseln).

Ich habe gefunden die Funktion, die ich verwenden muss, aber ich weiß es nicht wie um es zu benutzen.Die Dokumentation scheint darauf hinzudeuten, dass es sich in einem Untermodul von befindet GtkPackProps.Notebook, aber ich weiß nicht, wie ich das nennen soll.

Außerdem hat diese Funktion eine andere Typensignatur als jede, die ich zuvor gesehen habe.

 val switch_page : ([> `notebook ], Gpointer.boxed option -> int -> unit) GtkSignal.t

Ich denke, es gibt a zurück GtkSignal.t, aber ich habe keine Ahnung, wie ich den ersten Parameter an die Funktion übergeben soll (den ganzen Teil in Klammern).

Hat jemand einen Beispielcode, der zeigt, wie man die Notizbuchseite ändert, oder kann er mir vielleicht ein paar Tipps dazu geben?

War es hilfreich?

Lösung

Was Sie gefunden haben, ist keine Funktion, sondern das Signal.Der Funktionstyp, den Sie in seinem Typ sehen, ist der Typ des Rückrufs, der beim Seitenwechsel aufgerufen wird, ihn aber nicht verursacht.

übrigens wird der Typ von switch_page gelesen als:Signal (GtkSignal.t) von Notebook angehoben [> `notebook ], deren Rückrufe den Typ haben Gpointer.boxed option -> int -> unit

Im Allgemeinen sollten Sie sich bei lablgtk besser von den Gtk * -Low-Level-Modulen fernhalten und das Higher-Level-Modul tge G [Az] verwenden.Diese Modul-API sieht aus wie die C-Gtk-API, und ich benutze immer das Haupt-Gtk-Dokument, um mir selbst zu helfen.

In Ihrem Fall möchten Sie das GPack verwenden.notebook-Objekt und seine goto_page-Methode.

Andere Tipps

Sie haben eine gefunden polymorphe Variante; sie sind im Handbuch in Abschnitt 4.2 beschrieben, und die Tippregeln brechen mir immer den Kopf.Ich glaube, was die Signatur sagt, ist, dass die Funktion switch_page erwartet als Argument a GtkSignal.t, was eine Abstraktion ist, die durch zwei Typen parametrisiert wird:

  • Der erste Typparameter,

    [> `notebook]
    

    schließt als Werte jede polymorphe Variante ein, einschließlich notebook (das ist, was das größer-als bedeutet).

  • Der zweite Typparameter ist eine gewöhnliche Funktion.

Wenn ich die Dokumentation für lese GtkSignal.t richtig, es ist überhaupt keine Funktion;es ist ein Rekord mit drei Feldern:

  • name ist ein String.
  • classe ist eine polymorphe Variante, die `Notizbuch" oder etwas anderes sein könnte.
  • marshaller ist ein Marshaller für den Funktionstyp Gpointer.boxed option -> int -> unit.

Ich hoffe, das hilft.Wenn Sie mehr Probleme haben, könnte Abschnitt 4.2 des Handbuchs über polymorphe Varianten Sie aussortieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top