Domanda

Attualmente sto sperimentando con l'uso di OCAML e GTK insieme (usando LablGTK Bindings). Tuttavia, la documentazione non è la migliore, e mentre posso risolvere come utilizzare la maggior parte delle funzionalità, sono bloccato con la modifica delle pagine del notebook (passando a una scheda diversa).

Ho trovato La funzione che devo usare , ma non conosco come per usarlo. La documentazione sembra suggerire di essere in un sottoclodulo di GtkPackProps.Notebook , ma non so come chiamarlo.

Inoltre, questa funzione ha una firma di tipo diversa da qualsiasi ho visto prima.

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

Penso che restituisca un GtkSignal.t , ma non ho idea di come passare il primo parametro alla funzione (l'intera parte tra parentesi).

Qualcuno ha un codice di esempio mostrando come modificare la pagina del notebook o può forse darmi alcuni suggerimenti su come fare questo?

È stato utile?

Soluzione

Quello che hai trovato non è una funzione ma il segnale.Il tipo funzionale che vedi nel suo tipo è il tipo di callback che verrà chiamato quando si verifica l'interruttore di pagina, ma non lo causerà.

Tramite il modo in cui il tipo di switch_page viene letto come: un segnale (GtkSignal.t) sollevato da notebook [> `notebook ], le cui callback hanno digita Gpointer.boxed option -> int -> unit

In genere parlando, con lablgtk, è meglio stare lontano dai moduli GTK * a basso livello e utilizzare TGE G [A-Z] Modulo di livello superiore.Quelle API del modulo sembrano la C GTK, e io uso sempre il Doc GTK principale per aiutarmi.

Nel tuo caso si desidera utilizzare l'oggetto GPack.Notebook e il suo metodo goto_page.

Altri suggerimenti

Hai trovato una variante polimorfica ; sono descritti nel manuale nella sezione 4.2, e le regole di battitura mirano sempre la testa. Credo che cosa dice la firma è che la funzione switch_page prevede come argomento un GtkSignal.t, che è una astrazione parametrizzata da due tipi:

    .
  • Il primo parametro tipo,

    [> `notebook]
    
    .

    Include come valori qualsiasi variante polimorfica incluso notebook (è quello che è il più grande di mezzi).

  • Il secondo parametro tipo è una funzione ordinaria.

Se sto leggendo la documentazione per GtkSignal.t correttamente, non è affatto una funzione; È un record con tre campi:

    .
  • name è una stringa.
  • classe è una variante polimorfica che potrebbe essere `` taccuino "o qualcos'altro.
  • marshaller è un marshaller per il tipo di funzione Gpointer.boxed option -> int -> unit.

Spero che questo aiuti. Se hai più problemi, la sezione 4.2 del manuale, sulle varianti polimorfiche, potrebbe ordinarti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top