2011-06-23 12 views
5

Bir QHBoxLayout öğesinin sağ tarafına bir widget koymak istiyorum ve diğer boşluklar sol tarafı genişletmelidir. Widget'ın SizePolicy'yi Genişletmeye ayarlıyorum, ancak geçerli değil. Herkes yardım edebilir mi? Teşekkürler.Qt Düzenini Genişletme: Bir widget'ın sağ tarafa nasıl yerleştirileceği ve diğer pencere öğesinin sola tam olarak nasıl dolmasına izin verileceği?

Kod buradadır:

QHBoxLayout* tmplayout = new QHBoxLayout(this); 
tmplayout->setContentsMargins(0, 0, 0, 0); 
lineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored); 
tmplayout->addWidget(lineEdit, 0, Qt::AlignRight); 
tmplayout->addWidget(pushButton, 0, Qt::AlignRight); 

lineEdit genişletmek gerekir.

+0

Benzer bir örnek verebilir misiniz, lütfen? Gerçekten çok yorgunum. – user3294

+0

Lütfen sorun yaşadığınız kodu gönderin. – Gerstmann

cevap

6

değiştirmeyi deneyin:

tmplayout->addWidget(lineEdit, 0, Qt::AlignRight); 
tmplayout->addWidget(pushButton, 0, Qt::AlignRight); 

için:

tmplayout->addWidget(lineEdit); 
tmplayout->addWidget(pushButton); 

bu gibi basit düzenleri ile uğraşan, hizalamalarını belirtmek veya açıkça faktörleri germek için gerek yoktur. Belirli boyuta Buton zorlamak istiyorsanız

, sen ben sorununuzu doğru anlamak emin değilim ama belki de bakmak gerekir setMinimumSize, setMaximumSize ve setFixedSize

Saygılarımızla

+0

Bu, teşekkürler. – user3294

0

fixed veya minimum boyut politikalarını deneyin. Maksimum genişliği bile düzeltmek isteyebilirsiniz.

1

kullanabilirsiniz QSpacerItem'a. Eğer bu işe yaramazsa, belki de Qt-Creator'da kaba bir model oluşturabilir ve ekran görüntülerini gönderebilirsiniz (bir örneğiniz yaklaşık olarak ne olduğunu, bir örneği istediğinizi gösterir)

+0

Yani, lineEdit'in yerleşimin sol kısmını doldurmasına nasıl izin verebilirim. Şimdi anlıyor musunuz? – user3294

+0

Bence ExplodingRat sizin için bir cevaba sahip, ya strech ve hizalama için değerleri bırakmalı ya da faydalı değerleri ayarladı. http://doc.qt.nokia.com/4.7/qboxlayout.html#addWidget – bjoernz

+0

Evet, bu doğru, hepinize teşekkürler! – user3294

2

İstediğiniz widget'lar için solda olmak ve genişlemek için, sağ taraftakilerden önce eklemeyi deneyin ve gerdirme faktörleri için bir 1 ekleyin. Örneğin,

tmplayout->addWidget(exampleWidget, 1); 

Sonra, sadece soldaki peşine sağ tarafında olmak istiyorum widget'lar ekleyebilir, sadece kullanma:

tmplayout->addWidget(lineEdit); 
tmplayout->addWidget(pushbutton); 

Bu şekilde otomatik olarak streç verecek Bu örnekte exampleWidget gerilme faktörü yana 0

faktör 0, exampleWidget genişler varsayılan daha yüksektir 1 olduğu; ve diğerlerinden önce eklediğinizden, solda olacak.

+0

Teşekkürler, işe yarıyor! – user3294