2009-11-04 9 views
5

QDialog Çalışıyorum. QMessageBox gibi bir şekilde yapılmıştır. QMessageBox boyutunun (ve etiketinin boyutunun) görüntülenen mesajın boyutuna bağlı olduğunu fark ettim.Çocuklarından birinin metin uzunluğuna bağlı olarak QDialog'un boyutunu otomatik olarak nasıl ayarlayabilirim?

QMessageBox gibi otomatik olarak QDialog boyutunun ayarlanmasını nasıl yaparım? Şu anda benim QDialog benim bir düğme kutusu ve bir etiket içerir ve QDialog dikey düzenidir.

(ben sadece doğrudan mesaj kutusunu kullanabilirsiniz ama sonunda ben daha karmaşık diyaloglar olacak biliyorum.)

cevap

13

Otomatik çözüm:

Düzenleri kullanın ve boyut ilkelerini QSizePolicy::Expanding olarak ayarlayın. QtDesigner'da, tüm çocuklarınız QDialog'unuza yerleştirildikten sonra, Ayarlama Boyutu düğmesinin yanındaki mizanpajı tıklayın. QDialog'unuz çalışma zamanında otomatik olarak yeniden boyutlandırılacaktır.

Manuel çözüm:

QWidget sınıf QWidget içeriğini sığacak şekilde yeniden boyutlandırmak bir yöntem adjustSize sahiptir. Tüm çocuklar ayarlandığında sadece ara.

+1

el ile çözüm benim durumumda çalışmıyor: QTBoxWayget ve QTBoxLayout ile 2 düğmeli bir QDBox ile bir QDialog var, Iletişim kuralı üzerinde AdjustSize genişletme ve çağıran ilkeleri ayarlamak için ilkeleri ayarladım (görünür) – Lars

+0

Http://daniel-albuschat.blogspot.de/2009/08/shrinking-qt-widgets-to-minimum-needed.html: Burada gösterildiği gibi, adjustSize() çağrılmadan önce QApplication :: processEvents() yöntemini çağırmak önemlidir. – Cerno

1

sizin iletişim genişleyen ve çok küçük olması ayarlayın. Ardından iletinizi göstermeden önce mesajınızı ayarladığınızdan emin olun. Gösterildiğinde, içerdiği nesnelerin boyutuna göre uygun boyutunu bulmaya çalışacaktır. (Iletişim kutusu düzenleri kullanacak şekilde ayarlanmıştır, mesajınızı göstermek etiket ve iletişim arasındaki emin olun her şey hangi etiketin doğrudan ebeveyn değilse böylece bu, yinelemeli gerçekleşir.)

İlgili konular