2013-01-11 39 views
5

केंद्रित नहीं है सवाल यह सब है।QGridLayout में एक से अधिक सेल में निहित एक विजेट

मेरे पास 5 x 3 ग्रिड है।

यह इस

row 0: buttonA--buttonA--buttonA nothing buttonB--buttonB--buttonB 

row 1: empty row 

row 2: buttonC nothing buttonD nothing buttonE nothing buttonF  

खाली जगहों में जहां पूरे स्तंभ में कोई बात नहीं है या minimumRowHeight पंक्ति और उन सेटिंग्स के सभी काम करेगा तरह दिखता है। सही?

ठीक है। बटन ए और बटन बी (और बाकी), उन 3 कोशिकाओं पर केंद्रित नहीं होते हैं जिन्हें वे साझा करते हैं। कभी नहीँ। लेआउट के लिए पैरामीटर पर मैं क्या लिखता हूं इससे कोई फर्क नहीं पड़ता।

मैंने कोड मिटा दिया क्योंकि अंत में इसे वर्टिकल लेआउट का उपयोग करके और अंदर, दो क्षैतिज लेआउट का उपयोग किया गया। वे इस तरह केंद्रित हो जाते हैं। लेकिन मैं उन्हें बेहतर स्थिति में रखना चाहता हूं।

क्या नहीं करता है काम जब एक विजेट जोड़ने, उपयोग कर रहा है:

addWidget (विजेट, 0,0, 2,0, क्यूटी :: AlignHCenter); AlignCenter भी काम नहीं करता है।

इसे केंद्र में केंद्रित या गठबंधन कैसे करें?

धन्यवाद!

+0

मुझे कुछ पोस्ट मिलीं जो 3 सेल स्पेस के अंदर एक डमी विजेट को विस्तारित करने के लिए कहती हैं। फिर उस पर एक लेआउट डालें और विजेट जिसे हम केंद्रित करना चाहते हैं। क्या यह काम करेगा?क्या यह इतना जटिल नहीं है? – darkgaze

+0

एक साइड नोट के रूप में, आपने एक 7 x 3 ग्रिड दिखाया, न कि 5 x 3 एक –

+0

यदि आप बटन ए को 3 कॉलम से अधिक खींचना चाहते हैं, तो आपको "addWidget (विजेट, 0, 0, ** 0, 3 **); " कोशिश करें कि यह –

उत्तर

9

QGridLayout::addWidget() की वाक्य रचना इस तरह है:

शून्य QGridLayout :: addWidget (QWidget * विजेट, पूर्णांक fromRow, पूर्णांक fromColumn, पूर्णांक rowspan, पूर्णांक columnSpan, क्यूटी :: संरेखण संरेखण = 0)

इस संस्करण में, सेल ग्रिड से विजेट दिया कहते हैं म्यू फैले:

विवरण के साथ

ltiple पंक्तियों/कॉलम। सेल पंक्ति से शुरू होगा, कॉलम पंक्तिस्पैन पंक्तियों और कॉलम स्पेन कॉलम फैला रहा है।

यह आपके लाइन का मतलब है

addWidget(widget, 0, 0, 2, 0, Qt::AlignHCenter); 

fromRow = 0, fromColumn = 0, rowSpan = 2 और columnSpan = 0 है। इसका मतलब है कि यह पंक्ति 0 से शुरू होता है और दो पंक्तियों से अधिक होता है, यानी यह पंक्ति 0 और 1 में होगा (नोट: कुल में दो पंक्तियां, दो अतिरिक्त पंक्तियां नहीं)। इसके अलावा यह 0 की अवधि के साथ कॉलम 0 से शुरू होता है जो मुझे लगता है कि कॉलम अवधि को अनदेखा किया जाता है।

तो क्या तुम सच में होना चाहिए हैं:

addWidget(widget, 0, 0, 0, 3, Qt::AlignCenter); 

आप संरेखण थोड़ा के साथ प्रयोग करना पड़ सकता है।

इसके अतिरिक्त, आप this example पर एक नज़र डाल सकते हैं जो दर्शाता है कि दो पंक्तियों और दो स्तंभों पर एक बटन को कैसे खींचें।

+0

शानदार! अच्छी नौकरी। अच्छा जवाब के लिए बहुत बहुत धन्यवाद – darkgaze