سؤال

أقوم حاليًا بتجربة استخدام OCaml و GTK معًا (باستخدام ملف lablgtk الارتباطات).ومع ذلك، فإن الوثائق ليست الأفضل، وبينما يمكنني معرفة كيفية استخدام معظم الميزات، إلا أنني عالق في تغيير صفحات دفتر الملاحظات (التبديل إلى علامة تبويب مختلفة).

لقد وجدت الوظيفة التي أحتاج إلى استخدامها, ولكن لا أعرف كيف لتستخدمها.يبدو أن الوثائق تشير إلى أنه موجود في وحدة فرعية من GtkPackProps.Notebook, ، لكني لا أعرف كيف أسمي هذا.

أيضًا، تحتوي هذه الوظيفة على نوع توقيع مختلف عن أي توقيع رأيته من قبل.

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

أعتقد أنه يعود أ GtkSignal.t, ، لكن ليس لدي أي فكرة عن كيفية تمرير المعلمة الأولى إلى الوظيفة (الجزء بأكمله بين قوسين).

هل حصل أي شخص على بعض نماذج التعليمات البرمجية التي توضح كيفية تغيير صفحة دفتر الملاحظات، أو ربما يمكنه إعطائي بعض النصائح حول كيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

ما وجدته ليس وظيفة بل إشارة.النوع الوظيفي الذي تراه في نوعه هو نوع رد الاتصال الذي سيتم استدعاؤه عند حدوث تبديل الصفحة، ولكنه لن يتسبب في ذلك.

بالمناسبة تتم قراءة نوع Switch_page على النحو التالي:إشارة (GtkSignal.t) مرفوعة بالمفكرة [> `notebook ], ، التي تحتوي عمليات الاسترجاعات الخاصة بها على نوع Gpointer.boxed option -> int -> unit

بشكل عام، مع lablgtk، من الأفضل أن تبتعد عن وحدات Gtk* ذات المستوى المنخفض، وأن تستخدم وحدة tge G[A-Z] ذات المستوى الأعلى.تبدو واجهة برمجة تطبيقات الوحدة النمطية هذه مثل واجهة C Gtk، وأنا دائمًا أستخدم مستند Gtk الرئيسي لمساعدة نفسي.

في حالتك تريد استخدام كائن GPack.notebook وأسلوب goto_page الخاص به.

نصائح أخرى

كنت قد وجدت متعددة الأشكال البديل; إنهم الموضحة في هذا الدليل في القسم 4.2 و كتابة القواعد دائما كسر رأسي.أعتقد أن ما التوقيع يقول هو أن وظيفة switch_page كما يتوقع الحجة GtkSignal.t, الذي هو التجريد معلمات طريق نوعين:

  • النوع الأول المعلمة ،

    [> `notebook]
    

    كما يتضمن القيم أي متعددة الأشكال بما في ذلك البديل notebook (هذا ما أكبر مما يعني).

  • النوع الثاني المعلمة وظيفة عادية.

إذا أنا أقرأ الوثائق GtkSignal.t صحيح انها ليست وظيفة على الإطلاق ؛ إنه سجل في ثلاثة مجالات:

  • name هو سلسلة.
  • classe هو متعدد الأشكال البديل الذي يمكن أن يكون `دفتر` أو أي شيء آخر.
  • marshaller هو marshaller عن وظيفة نوع Gpointer.boxed option -> int -> unit.

آمل أن يساعد هذا.إذا كان لديك المزيد من المشاكل ، القسم 4.2 من دليل على الأشكال المتغيرات ، قد أضربك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top