मेरे पास एक कस्टम विजेट है जिसमें QVBoxLayout का एक संपूर्ण लेआउट है। इसमें कई लेबल, एक QFormLayout, एक बटन, और सभी अतिरिक्त जगह खाने के लिए एक खिंचाव शामिल है। लेबलों में से एक काफी बड़ा हो सकता है इसलिए मैं यह सुनिश्चित करने की कोशिश कर रहा हूं कि कोई अजीब मामला नहीं है जहां टेक्स्ट अपठनीय है। यह विजेट यह सुनिश्चित करने के लिए एक QScrollArea के भीतर निहित है कि यदि उपयोगकर्ता समग्र विंडो को छोटा करता है तो विजेट के सभी पहलुओं को अभी भी देखा जा सकता है।QLabel आकार बदलने का पाठ
क्यूएलएबल ठीक आकार का आकार बदलता प्रतीत होता है, लेकिन एक बार जब यह नाबालिग के एक निश्चित बिंदु तक पहुंच जाता है तो यह लेबल की निचली कुछ पंक्तियों में कटौती करता है और विजेट के निचले भाग में स्थान को स्थानांतरित करता है।
मैं डिजाइनर के बिना कोड में यह सब कर रहा हूं, इसलिए यह पूरी तरह से संभव है कि मुझे कुछ याद आ रहा है। उप-घटक निम्न क्रम में समग्र QVBoxLayout जोड़े जाते हैं:
OverallLayout = new QVBoxLayout(this);
Title = new QLabel();
Description = new QLabel();
SubRegion = new QFormLayout();
Button = new QButton();
...
// set text values, wordWrap(true), and Font for labels
OverallLayout->addWidget(Title);
OverallLayout->addWidget(Description);
OverallLayout->addLayout(SubRegion);
OverallLayout->addStrut(MIN_DIST);
OverallLayout->addWidget(Button);
OverallLayout->addStretch(STRETCH_FACTOR);
टेस्ट परिणाम: QLabel के sizeHint() फ़ंक्शन से लौटे परिणाम की जांच करना, मूल्यों वापसी हुई विजेट क्षैतिज सिकुड़ रहा है बदलने के लिए नहीं दिखाई देते। हालांकि, QLabel अधिक लंबवत कमरे (153 के संकेत के रूप में 153) लेने के लिए विस्तार करता है, बस सभी पाठ फिट करने के लिए पर्याप्त नहीं है। जब QLabel पहली बार दिखाया गया है, तो इसके आकार की तुलना में इसमें कम पिक्सेल है लेकिन इसकी ऊंचाई के लिए अभी भी पर्याप्त है। जब इसका आकार बदलता है, तो इसकी ऊंचाई से 30 गुना कम होता है, इसके आकार की तुलना में अधिक है लेकिन इसके आकार से अधिक है।
मैंने जांच की है और बड़े QLabel के पास हैइटफायरविड्थ() और wordWrap() मान सत्य पर सेट हैं। मैं क्या गलत कर रहा हूं?
क्या आप कोड स्निपेट जोड़ सकते हैं जहां ये विजेट लेआउट में जोड़े जा रहे हैं? मुझे लगता है कि आपको setMinimumHeight() द्वारा QLabel का न्यूनतम आकार सेट करना चाहिए ताकि कोई कट ऑफ न हो। वैकल्पिक रूप से आप स्पेसर तत्व के लिए अधिकतम ऊंचाई मान सेट कर सकते हैं। –
एक तरीका जिस पर मैंने इसे ठीक करने का विचार किया है, वह आकार बदलने वाली विधि से जुड़ा हुआ है और ऊंचाई लेबल पर न्यूनतम ऊंचाई सेट है, विवरण लेबल के लिए फोर्डविड्थ (चौड़ाई) मान। हालांकि यह थोड़ा सा झुकाव लगता है, इसलिए मैं सोच रहा था कि लेआउट मैनेजर को अपना काम करने का उचित तरीका क्या होगा। – ElCraneo
लेकिन 'setMinimumHeight() 'का उपयोग करने के सुझाव के बारे में क्या? – jdi