2009-03-04 15 views
8

इस विजेट का पदानुक्रम मुझे मिल गया है है:मैं wxwidgets में न्यूनतम विंडो आकार कैसे सेट करूं?

फ़्रेम> wxBoxSizer> wxPanel> wxBoxSizer> wxFlexGridSizer (2 कॉलम, 9 पंक्तियों), मिश्रित प्रपत्र फ़ील्ड्स और बटन के अंदर के साथ।

पहला बॉक्ससाइज़र पैनल को रखना है, और दूसरा फ्लेक्सग्रिड के चारों ओर सीमा बनाना है।

सबकुछ अच्छा दिखता है, और खिड़की बढ़ने पर फ्रेम ठीक से विस्तार कर सकता है, लेकिन इसे सभी रूपों का आकार बदलकर लगभग कुछ भी नहीं बदला जा सकता है।

डिफ़ॉल्ट रूप से फ्लेक्सग्रिडसाइज़र द्वारा सुझाए गए अनुसार विंडो के लिए न्यूनतम आकार को कैसे बल दिया जाए (सभी फॉर्म तत्व दिखाई दे रहे हैं और उनके न्यूनतम संभव आकार हैं)?

उत्तर

6

न्यूनतम आकार निर्धारित करने के लिए अपने फ्रेम पर SetMinSize() विधि का उपयोग फ्रेम के सबसे छोटे क्षेत्र (बस इसका परीक्षण किया गया) पर एक सीमा निर्धारित करेगा। एक बार सेट हो जाने पर, wxwidgets फ्रेम को निर्दिष्ट मान से छोटे आकार देने की अनुमति नहीं देगा।

मैं इस तरह का मान निर्धारित करता हूं। निर्माता में, फ्रेम के सभी तत्वों को स्थापित करें। अंत में, आप सभी साइज़र और ऐसे सेटअप करने के लिए Layout() विधि को कॉल करने के बाद, डिफ़ॉल्ट लेआउट पर अपने फ्रेम के x और y आकार को प्राप्त करने के लिए GetSize(int *w, int *h) विधि पर कॉल करें। उस फ्रेम का उपयोग अपने फ्रेम के लिए न्यूनतम आकार के रूप में सेट करने के लिए SetMinSize() विधि को कॉल करने के लिए करें। यह सभी विभिन्न पैडिंग और सीमाओं को ध्यान में रखेगा और फ्रेम और निहित तत्वों द्वारा स्थापित किया जाएगा।

1

मैं wxFrame->SetMinSize(wxSize) को wxFlexGridSizer->GetMinSize() रिटर्न के साथ कॉल करने का प्रयास करता हूं, काम करना चाहिए, लेकिन परीक्षण नहीं किया जाना चाहिए। मुझे यह नोट करने की आवश्यकता होगी कि GetMinSize कहां से गुजरने से पहले खिड़की के आकार को कवर करने के बारे में कहता है।

2

wxPerl में, dagorym के जवाब Layout() के लिए एक कॉल के बाद $self->SetMinSize($self->GetSize()); के रूप में संक्षेप में लिखा जा सकता है।

12

शायद बहुत देर हो चुकी है लेकिन यहां दिए गए उत्तरों को अनिवार्य रूप से जटिल हैं, आपको केवल फ्रेम के साथ साइज़र को जोड़ने के लिए SetSizerAndFit(sizer) पर कॉल करने की आवश्यकता है, इसके प्रारंभिक आकार को सेट करें और यह आकार न्यूनतम स्वीकार्य आकार के रूप में भी सेट करें।

+1

आपके उत्तर के लिए बहुत देर हो चुकी नहीं है! – dolmen

संबंधित मुद्दे