2013-05-01 7 views
5
में खड़ी फैलता

मैं एक छोटे से वाक्य के साथ एक QLabel, एक QLineEdit और एक QPushButton, इसी क्रम में डाला है एक QVBoxLayout में,। मेरा मुख्य विंडो उपयोगकर्ता के डेस्कटॉप का 70% है।लेबल एक QVBoxLayout

मेरी समस्या यह है कि मेरा लेबल मूल विंडो की ऊंचाई का लगभग 80% और QLineEdit तक फैला हुआ है और 'क्यूबटन \ नीचे निचोड़ा हुआ है।

मैंने इसे हल करने का एक तरीका निकाला: मैंने बिना किसी सामग्री के अधिक लेबल डाले लेकिन यह सुनहरा समाधान नहीं हो सकता है। मैं क्या कर सकता हूँ?

मैंने QFormLayout भी कोशिश की लेकिन यह मेरी आवश्यकताओं के अनुरूप नहीं है। मुझे विगेट्स को लंबवत क्रम में होना पसंद है। मैंने QSizePolicy के साथ कई तरीकों की कोशिश की लेकिन यह काम नहीं कर सका।

उत्तर

7

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

उदाहरण:

#include <QtGui> 

class W: public QWidget 
{ 
    Q_OBJECT 

    public: 
     W(bool spacer, QWidget *parent = 0) 
      : QWidget(parent) 
     { 
      QLabel *l = new QLabel("Hello!"); 
      QLineEdit *e = new QLineEdit; 
      QPushButton *p = new QPushButton("Go"); 

      QVBoxLayout *vl = new QVBoxLayout; 
      vl->addWidget(l); 
      vl->addWidget(e); 
      vl->addWidget(p); 

      if (spacer) 
       vl->addStretch(); 

      setLayout(vl); 

      resize(200, 400); 
     } 
}; 

रेंडर:

enter image description here

(कोई बाईं तरफ खिंचाव, सही पर खिंचाव।)

+0

धन्यवाद thats मैं वास्तव में क्या देख रहा था:) मैं यह कोशिश करूंगा;) लेकिन अगर (स्पेसर) का मतलब क्या है? – dadod2

+0

यह कन्स्ट्रक्टर में बस एक पैरामीटर है जिसे मैंने दो आसानी से दिखाने में सक्षम होने के लिए रखा है। (यानी बाईं तरफ की खिड़की 'नई डब्ल्यू (झूठी) की तरह sth के साथ बनाई गई थी;', दाईं ओर वाला एक 'नया डब्ल्यू (सत्य);')। यह सिर्फ इस डेमो के लिए है। – Mat

+0

आह ठीक है हाँ और यह ठीक काम करता है धन्यवाद – dadod2