سؤال

وهذا هو التسلسل الهرمي من الحاجيات لقد حصلت على:

والإطار> wxBoxSizer> wxPanel> wxBoxSizer> wxFlexGridSizer (2 الأعمدة، 9 صفوف)، مع حقول النماذج المتنوعة وأزرار الداخل.

وأول BoxSizer هو وضع لوحة في، والثاني هو جعل الحدود حول FlexGrid ذي.

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

وكيف يمكنني اجبار الحد الأدنى لحجم الإطار إلى واحد اقترحه FlexGridSizer افتراضيا (جميع عناصر النموذج مرئية وجود الحد الأدنى من الأحجام الممكنة بهم)؟

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

المحلول

وباستخدام طريقة SetMinSize () على الإطار الخاص بوضع حد أدنى للحجم ووضع حد لأصغر مساحة من الإطار (اختبار فقط عليه). مجموعة مرة واحدة، سوف كويدغيتس لا يسمح الإطار إلى أن الحجم أصغر من القيمة المحددة.

وكنت تعيين قيمة من هذا القبيل. في منشئ، وإعداد جميع عناصر الإطار. في النهاية، بعد استدعاء الأسلوب Layout() لإعداد جميع sizers وكذا، استدعاء الأسلوب GetSize(int *w, int *h) للحصول على x و y حجم الإطار الخاص بك في التخطيط الافتراضي. استخدام هذه القيم إلى استدعاء الأسلوب SetMinSize() لتعيين هذا الحجم الافتراضي كحد أدنى للالإطار الخاص بك. هذا وسوف تأخذ في الاعتبار جميع مختلف الحشو والحدود ومثل شكلتها الإطار والعناصر الواردة.

نصائح أخرى

وربما متأخرا جدا ولكن الاجابات التي قدمت هنا هي معقدة دون داع، وتحتاج فقط للاتصال SetSizerAndFit(sizer) لكلا ربط بحجم مع الإطار، وضبط حجم الأولي وأيضا تعيين هذا الحجم كما الحد الأدنى من حجم مقبول.

في wxPerl، dagorym الصورة الجواب يمكن أن تكون مكتوبة بشكل مقتضب كما $self->SetMinSize($self->GetSize()); بعد استدعاء Layout().

وسوف أحاول يدعو wxFrame-> SetMinSize (wxSize) مع أي wxFlexGridSizer-> GetMinSize () يعود، يجب أن تعمل، ولكن لم يتم اختباره. سوف تحتاج إلى ملاحظة ما يقول GetMinSize حول مقنعة لحجم النافذة قبل تمريرها أتوقع.

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