سؤال

وأنا باستخدام مصمم wxGlade لتوليد واجهة المستخدم الرسومية لتطبيق صغير. فهو يولد فئة، ورثت من wxFrame، وهو نافذة التطبيق الرئيسية. من أجل تسهيل الصيانة وأود أن تجنب كتابة تعليمات برمجية إضافية في هذه الفئة التي تم إنشاؤها.

ولكن كل الحاجيات التي تم إنشاؤها باستخدام wxGlade يتم إنشاء فعلا في طريقة do_layout الذي تم إنشاؤه تلقائيا ()، وأنه من غير الممكن الوصول إليها خارج نطاق هذه الطريقة ولدت في الفئة التي تم إنشاؤها.

هل هناك طريقة للحصول على المؤشر من القطعة معينة خارج تلك الفئة التي تم إنشاؤها - بالاسم، حسب النوع، بواسطة تعداد الأطفال أو شيء من هذا القبيل

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

المحلول

وجميع الطبقات الموروثة من wxWindow (wxFrame واحدة منها) لديها وظيفة " GetChildren "، والتي ترجع قائمة الإطارات التابعة التي يمكنك ثم تعداد انتهى. إذا كنت تبحث عن حقل معين بالاسم ثم استخدام " FindWindow " وظيفة.

نصائح أخرى

والحقيقة أنني وجدت الإجابة نفسي:

wxWindowList & children = myframe->GetChildren();
for ( wxWindowList::Node *node = children.GetFirst(); node; node = node->GetNext() )
{
     wxWindow *current = (wxWindow *)node->GetData();

     // .. do something with current
}

قد أوصى حاولت wxFormBuilder . أود أيضا أن تستخدم wxGlade من قبل، ولكنه يقدم الكثير من القيود على كيفية استخدامها. على سبيل المثال، مع wxFormBuilder يمكنك تحديد "الرؤية" (الجمهور، وحمايتها والخاص) لكل عنصر تحكم في النموذج. كما يمكن أن تولد وظائف افتراضية للمعالجات الأحداث، لذلك أنت فقط تستمد صفك من wxFormBuilder لدت الطبقة وتنفيذ تلك المهام.

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