2013-05-07 8 views
6

में विजेट जोड़ना और मैंक्यूटी - मैं एक क्षैतिज लेआउट क्षैतिज लेआउट

ui->horizontalLayout->addWidget(label); 

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

adding 3 widgets

keep adding

लेकिन, मैं क्या चाहते है कि, जब मैं लेआउट पर विजेट जोड़ने, यह पिछले विजेट के बगल में रखा जाना चाहिए है। इस तरह, what i want

क्या ऐसा करना संभव है?

उत्तर

5

सभी विजेट जोड़े जाने के बाद इसमें एक स्ट्रेचर जोड़ें।

ui->horizontalLayout->addStretch(); 

करेगा।

+0

मैंने कोशिश की लेकिन यह – abby

+0

काम नहीं करता है परिणाम क्या है? –

+0

कुछ भी नहीं बदला है। – abby

2

आप अपने क्षैतिज लेआउट के बाहर या अपने क्षैतिज लेआउट के अंदर spacer item जोड़ सकते हैं। यदि आप क्षैतिज लेआउट के अंदर स्पेसर आइटम जोड़ते हैं, तो आपको यह सुनिश्चित करना होगा कि आप स्पेसर आइटम से पहले अपने लेबल विजेट जोड़ दें। इस मामले में अपने लेबल जोड़ने के लिए insertWidget() फ़ंक्शन का उपयोग करें।

या आप अपने लेबल विजेट जोड़े जाने के बाद अपने क्षैतिज लेआउट के अंत में स्पेसरिटम जोड़ सकते हैं।

QHBoxLayout *hlayout = new QHBoxLayout; 
ui->verticalLayout->addLayout(hlayout); 
QSpacerItem *item = new QSpacerItem(1,1, QSizePolicy::Expanding, QSizePolicy::Fixed); 
hlayout->addSpacerItem(item); 
for(int i = 0; i < 10; i++) 
{ 
    QLabel *label = new QLabel("NOTE"); 
    hlayout->insertWidget(i, label); 
} 
+0

क्या आपके पास स्पेसर आइटम का उपयोग करने के लिए अधिक विशिष्ट उदाहरण है? – abby

+0

@abby मैंने अपना जवाब संशोधित किया और एक उदाहरण जोड़ा। – thuga

+0

यह प्रश्न में रखी गई दूसरी तस्वीर की तरह जोड़ता है। लेकिन मुझे तीसरी तस्वीर जैसे नोट्स के बीच कोई जगह नहीं चाहिए। – abby

1

setAlignment(Qt::AlignLeft); चाल करना चाहिए:

यहाँ एक उदाहरण है। इसके अलावा आप इसका उपयोग विगेट्स के बीच अतिरिक्त स्थान को हटाने के लिए:
setSpacing(0);setContentsMargins(0, 0, 0, 0);
के साथ कर सकते हैं।

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