Pergunta

Atualmente estou experimentando com o uso de OCaml e GTK juntos (usando o lablgtk enlaces).No entanto, a documentação não é o melhor, e embora eu possa descobrir como usar a maioria dos recursos, eu estou preso com a mudança de notebook páginas (para mudar para outro separador).

Eu encontrei a função que eu preciso para usar, mas eu não sei como para usá-lo.A documentação parece sugerir que ele esteja em um sub-módulo de GtkPackProps.Notebook, mas eu não sei como chamar isso.

Além disso, esta função tem um tipo de assinatura diferente de qualquer outro que eu tenha visto antes.

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

Eu acho que ele retorna um GtkSignal.t, mas eu não tenho nenhuma idéia de como passar o primeiro parâmetro para a função (toda a parte entre parênteses).

Alguém tem algum exemplo de código mostrando como alterar o notebook página, ou talvez possa me dar algumas dicas de como fazer isso?

Foi útil?

Solução

O que você encontrou não é uma função, mas o sinal.O tipo funcional que você vê no seu tipo é o tipo de callback que será chamada quando a página do interruptor de acontecer, mas não causá-lo.

pela maneira como o tipo de switch_page é lido como:um sinal (GtkSignal.t) gerado pelo notebook [> `notebook ], cujos retornos de chamada têm o tipo Gpointer.boxed option -> int -> unit

Geralmente falando, com lablgtk, é melhor você ficar longe do Gtk* baixo nível de módulos, e usar tge G[A-Z] maior nível de módulo.Aqueles API do módulo do olhar, como o C Gtk, e eu uso sempre o principal Gtk doc para me ajudar.

No seu caso você queira usar o GPack.caderno de objeto e seus goto_page método.

Outras dicas

Você encontrou um variante polimórfica; eles estão descritos no manual, na Seção 4.2, e a escrever as regras de sempre quebrar minha cabeça.Eu acredito que a assinatura diz é que a função switch_page espera como argumento um GtkSignal.t, que é uma abstração parametrizada por dois tipos:

  • O primeiro tipo de parâmetro,

    [> `notebook]
    

    inclui como valores de qualquer variante polimórfica incluindo notebook (que é o que a maior-que significa).

  • O segundo tipo de parâmetro é uma função comum.

Se eu estou lendo a documentação para GtkSignal.t corretamente, ele não é uma função;é um registro com três campos:

  • name é uma seqüência de caracteres.
  • classe é uma variante polimórfica que poderia ser `bloco de notas` ou algo mais.
  • marshaller é um empacotador para o tipo de função Gpointer.boxed option -> int -> unit.

Espero que isso ajude.Se você tem mais dificuldade, seção 4.2 do manual, em variantes polimórficas, podem classificar para fora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top