باستخدام أجهزة واجهة مستخدم مخصصة مع glade / gtkbuilder

StackOverflow https://stackoverflow.com/questions/3002243

  •  25-09-2019
  •  | 
  •  

سؤال

أقوم بتطوير تطبيق مع GTK و Glade. انطباعي هو أنه من الممارسات الشائعة إنشاء فئة فرعية من GTKWindow لنافذتك الرئيسية ، لكنني عالق في كيفية بناء الفئة الفرعية الخاصة بي من تعريف GTKBuilder. لا أحد يعرف كيف؟

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

المحلول

التصنيف الفرعي GtkWindow هو أكثر شيوعًا في روابط اللغة المختلفة لـ GTK مما هي عليه في Plain C. لم تذكر اللغة التي كنت تستخدمها.

ومع ذلك ، فإن الطريقة الفرعية GtkWindow في C هو إنشاء محتويات النافذة في Glade ، ولكن ليس النافذة نفسها. في Glade 3 (IIRC) ، يمكنك النقر بزر الماوس الأيمن على عنصر واجهة مستخدم في اللوحة واختيار "إضافة عنصر واجهة مستخدم كطبيعة" لوضع عنصر واجهة مستخدم غير توبوفيل بدون حاوية.

ثم اكتب رمزًا لفئة الفئة الفرعية الخاصة بك GtkWindow, ، دعنا نسميها MyAppWindow. لن أخوض ذلك في هذه الإجابة نظرًا لوجود الكثير من الأمثلة في وثائق GoBject. في وظيفة init (my_app_window_init()) تحميل ملف glade ، استخدم gtk_builder_get_object() للحصول على مؤشر إلى عنصر واجهة مستخدم خارجية في ملف Glade ، واستخدام gtk_container_add() لإضافتها إلى النافذة التي تقوم بإنشائها. ثم استخدام gtk_builder_connect_signals() كما تفعل عادة.

يجب عليك تعيين جميع خصائص النافذة يدويًا بهذه الطريقة ، حيث لا يمكنك القيام بذلك في Glade ، لكن بخلاف ذلك وجدت أنه يعمل بشكل جيد.

نصائح أخرى

ليس من الممارسات الشائعة الفئة الفرعية gtkwindow.

لا أعتقد أنه من الممكن نافذة الفئة الفرعية التي تم إنشاؤها من تعريف GTKBuilder.

يحتاج Gtkbuilder إلى معرفة عنصر واجهة المستخدم الفرعية قبل الإنشاء.

إذا كنت ترغب حقًا في إنشاء فئة فرعية خاصة بك من GTKWindow Ptomato يصف الخطوات الأساسية جيدًا. من الممكن أيضًا إنشاء مكونات إضافية لـ Glade لإتاحة مصادرك المخصصة. لكن هذا ليس بالأمر السهل للغاية ، وعلى الأرجح ليس ما تريد القيام به.

تستخدم معظم التطبيقات فقط عناصر واجهة مستخدم قياسية دون تصنيف أي منها. ثم تحميل ملف glade باستخدام gtkbuilder (أو libglade) لا تحتاج إلى الحصول على فئة خاصة لـ GUI الخاص بك (كما هو الحال في بعض أدوات RAD الأخرى) بدلاً من ذلك ، يمكنك الحصول على مجموعة من الكائنات. تتيح لك واجهة برمجة تطبيقات البحث عنها بالاسم (والنافذة هي في الأساس واحدة منها). تتمثل المقاربة الشائعة في البحث عن جميع عناصر واجهة المستخدم التي ستتفاعل معها وتخزينها في المتغيرات العالمية عندما يبدأ البرنامج. أو إذا كنت بحاجة إلى عدة مثيلات من النافذة ، فيمكنك إنشاء بنية لتخزينها فيها. أو يمكنك البحث البسيط عن واجهة المستخدم في كل مرة تحتاجها. لاحظ أن مجموعة الكائنات التي تحصل عليها ديناميكية تمامًا. يمكنك على سبيل المثال نقل الأدوات الحاجيات بين النوافذ المختلفة تمامًا كما لو قمت بإنشاء واجهة المستخدم الرسومية برمجيًا.

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