2008-10-24 15 views
12

मुझे एक जटिल संवाद मिला है, और यह व्हाइटस्पेस से भरा है और मैं इसे कम नहीं कर सकता। डिजाइनर में, इसमें बहुत सारे घटक होते हैं जो गतिशील रूप से छिपाते हैं, और कुछ जो गतिशील रूप से जोड़े जाते हैं। मैंने आकार नीतियों, आकार संकेतों और न्यूनतम आकारों के डंपिंग को जोड़ा है, लेकिन अभी भी यह पता नहीं लगाया जा सकता है कि क्यों क्यूटी मुझे इसे छोटा खींचने नहीं देगा।आप क्यूटी लेआउट समस्याओं को कैसे डिबग करते हैं

समस्या निवारण के लिए कुछ टूल या तकनीक होनी चाहिए।

कृपया साझा करें।

उत्तर

4

मुझे ऐसा करने के लिए किसी भी उपकरण के बारे में पता नहीं है, लेकिन मैंने संवाद में विभिन्न तत्वों के पैलेट को बदलकर इसे पहले प्रबंधित किया है, फिर मुझे उम्मीद है कि मैं अपेक्षा से अधिक (या कम) कमरा ले रहा हूं , और उन तत्वों पर मेरी जांच पर ध्यान केंद्रित किया।

अधिक सामान्य अर्थ में, सुनिश्चित करें कि आपने एक निश्चित आकार नहीं होने के लिए संवाद सेट किया है। वह मुझे एक बार भी थोड़ा सा।

1

लगता है जैसे हम फायरबग के तत्व और सीएसएस मेट्रिक्स इंस्पेक्टर मोड के बराबर उपयोग कर सकते हैं। इस तरह के एक उपकरण का सबसे कठिन हिस्सा प्रभावशाली ढंग से पता लगाना और संचार करना होगा कि क्यों एक व्यक्तिगत लेआउट नीति विजेट में दिए गए आकार मान का उपयोग कर रही थी या नहीं।

1

अपना लेआउट देखे बिना बताना मुश्किल है, लेकिन मुझे QGridLayout का उपयोग करने के कारण आपके द्वारा वर्णित कई आकार की समस्याएं दिखाई देती हैं। कॉलम या पंक्ति में सबसे बड़ी बात, उस कॉलम की न्यूनतम चौड़ाई निर्धारित करने जा रही है। एक पंक्ति के लिए वही।

यदि आप QGridLayout का उपयोग कर रहे हैं, तो आप चीजें span columns/rows बनाने का प्रयास कर सकते हैं।

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

3

आप QApplication :: focusChanged (QWidget *, QWidget *) सिग्नल को कैप्चर कर सकते हैं और वर्तमान में केंद्रित विजेट की पृष्ठभूमि बदल सकते हैं। मुझे लगता है कि यह निर्धारित करने में मदद करेगा कि प्रत्येक विजेट पर कितनी जगह है।

0

बहुत सारे परीक्षण और त्रुटि। मैंने पाया है कि सामरिक धब्बे में फैलने से अक्सर मुझे उस प्रभाव का उत्पादन करने में मदद मिलती है जो मैं चाहता हूं। मत भूलना कि तुम एक लेआउट की सामग्री को मार्जिन सेट कर सकते हैं कि

 

QHBoxLayout* layout = new QHBoxLayout; 
QPushButton* myBtn = new QPushButton("Test"); 

layout->insertStretch(1); 
layout->addWidget(myBtn, 0); 
layout->insertStretch(1); 
 

इसके अलावा, उदाहरण के लिए, अगर मैं एक लेआउट में एक QPushButton है मैं न्यूनतम आकार मैं निम्नलिखित की तरह कुछ करना होगा होना चाहता हूँ कि setContentsMargins() के साथ।

मैं डिजाइनर का उपयोग नहीं करता क्योंकि मैंने पाया है कि जब मैं कोड में इसके साथ खेलता हूं तो लेआउट सिस्टम को बेहतर समझता हूं।

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