Qt Widget'ı pencere boyutuyla nasıl büyütebilirim?


89

Küçük olsun istiyorum QFormLayoutÜst widget'ını dolduracak şekilde büyüyen parçaya .

Qt Designer'daki şablonu kullanarak yeni bir .ui dosyası oluşturdum QWidget. Bir koyun QFormLayout'Pencere', o içindeki bazı kontrolleri koymak içini QFormLayout.

Bunların hepsi oldukça iyi çalışıyor, ancak QFormLayouther zaman Qt Designer'da belirlediğim boyutta kalıyor. Ben istiyorum QFormLayoutkendi üst widget'ı doldurup büyümek / onunla küçültmek için.

Bunu nasıl başarabilirim?

Yanıtlar:


130

Designer'da, centralWidget'ı etkinleştirin ve örneğin yatay veya dikey düzen gibi bir yerleşim atayın. Ardından QFormLayout'unuz otomatik olarak yeniden boyutlandırılacaktır.

Tasarımcının Resmi

Her zaman tüm widget'ların bir düzeni olduğundan emin olun! Aksi takdirde, otomatik yeniden boyutlandırma bu widget ile kesilecektir!

Ayrıca bakınız

QtDesigner'da kontroller çok büyük olmakta ısrar ediyor ve yeniden boyutlandırmıyor


13
QtDesigner bazen kafa karıştırıcı olabilir.
bastibe

30
oh, bunun için TEŞEKKÜRLER! :-) Yarım saattir QtDesigner'a bakıyorum (evet, QtCreator, yine de aynı şey) ve merkezi widget'ımın neden maksimuma yeniden boyutlandırmadığını anlayamadım - ta ki küçük küçük simgeyi fark edene kadar cevabınızda daire içine alınmışsa üzerinde kırmızı bir 'devre dışı' işareti var. oluşturucu araç çubuğundaki 'dikey yerleştir' düğmesine bir kez tıkladığınızda sorun giderilir. İlk kez BTW araç çubuğunu fark ettim, gözden
kaçması

8
Jens cevabı hakkında yorum yapmak için: Mac'te, üst düzey widget'ı ("centralWidget" olarak adlandırılması gerekmez) tıklayın, ardından menü çubuğundaki "Form" u tıklayın ve düzenlerden birini seçin.
hnasarat

2
Hala merak eden biri varsa, bu, QT5.8 / QT Creator 4.2.1'de Windows'ta üst düzey "centralWidget" (üzerinde küçük bir kırmızı işaret vardır) tıklanarak ve ardından Araçlar> Form Düzenleyici> Yerleşim'e giderek yapılır. Dikey (veya yatay).
LeoR

41

Altına en az bir çocuk ekleyene kadar centralwidget'e bir düzen atamanın imkansız olduğunu fark ettim. Ardından, kırmızı 'devre dışı bırakılmış' işaretli küçük simgeyi vurgulayabilir ve ardından üstteki Tasarımcı araç çubuğundaki bir yerleşime tıklayabilirim.


4
Bu çıldırtıcı. Merkezi parçacığa bir düzen atamak , Qt Creator'daki en önemsiz işlem olmalıdır . Bunun yerine, bu sayede, bu yüksek unintuitive solüsyonu birleştirerek gerektirir Jens ' eşit unintuitive çözeltisi ( bu tam sırayla ). Qt Creator tarafından sağlanan otomasyon hala geniş bir farkla tekrarlayan standart şablonunu geride bırakırken, korkunç kullanıcı deneyimini (UX) hacklemek bana yeni bir göz seğirmesi verdi.
Cecil Curry

@Cecil Curry bu çözümden sonra bile ne yapmam gerektiğini anlamam 20 dakikamı aldı ... çünkü centralWidget yalnızca düzen eklemek için bağlam menüsü seçeneği olmadığında ... yalnızca araç çubuğunda neredeyse etkin olmayan gibi görünen mikroskobik bir düğme
Swift - Friday Pie

3
Bu yorumu yazarken, buradaki çözümlerden sonra bile seçeneği bulmakta zorlandım. CentralWidget'i seçmeniz, ardından uygulamanızın boş bir alanına sağ tıklamanız, açılan bağlam menüsünde 'Düzen'e gitmeniz ve ardından istediğiniz düzeni seçmeniz gerekir. Bu benim için çalıştı, en azından (QT5, QT Designer 5.11.1 kullanarak).
kushy

11

Kabul edilen cevap (görüntüsü) yanlış, en azından şimdi QT5'te. Bunun yerine, kök nesneye / parçacığa bir düzen atamalısınız (yukarıda belirtilen görüntüye işaret ederek, onun MainWindowyerine olmalıdır centralWidget). Ayrıca QObjectbunun çalışması için altında en az bir tane oluşturmanız gerektiğini unutmayın . Bunu yapın ve kullanıcı arayüzünüz pencere yeniden boyutlandırmaya duyarlı hale gelecektir.


2

Üst seviye QWidget nesnesinin varsayılan yerleşim tipini Break yerleşim tipinden diğer yerleşim tiplerine (Dikey Yerleşim, Yatay Yerleşim, Izgara Düzeni, Form Yerleşimi) değiştirmeniz gerekir. Örneğin: görüntü açıklamasını buraya girin

Bunun gibi bir şeye:

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.