วิธีสร้างวิดเจ็ต Qt ให้ใหญ่ขึ้นตามขนาดหน้าต่าง?


89

ฉันต้องการมีขนาดเล็กQFormLayoutที่เติบโตขึ้นเพื่อเติมเต็มวิดเจ็ตหลัก

ฉันสร้างไฟล์.uiใหม่โดยใช้QWidgetเทมเพลตใน Qt Designer ฉันใส่QFormLayoutภายในที่หน้าต่าง QFormLayout'แล้วใส่ระบบควบคุมภายในที่บาง

ทั้งหมดนี้ทำงานได้ดีพอสมควร แต่ขนาดQFormLayoutจะยังคงอยู่ในขนาดที่ฉันตั้งไว้ใน Qt Designer เสมอ ฉันต้องการQFormLayoutเติมวิดเจ็ตหลักและขยาย / ย่อขนาดด้วย

ฉันจะทำมันให้สำเร็จได้อย่างไร?

คำตอบ:


130

ใน Designer เปิดใช้งาน centralWidget และกำหนดเค้าโครงเช่นเค้าโครงแนวนอนหรือแนวตั้ง จากนั้น QFormLayout ของคุณจะปรับขนาดโดยอัตโนมัติ

รูปภาพของนักออกแบบ

ตรวจสอบให้แน่ใจเสมอว่าวิดเจ็ตทั้งหมดมีเค้าโครง! มิฉะนั้นการปรับขนาดอัตโนมัติจะทำลายวิดเจ็ตนั้น!

ดูสิ่งนี้ด้วย

การควบคุมยืนยันว่าใหญ่เกินไปและจะไม่ปรับขนาดใน QtDesigner


13
QtDesigner อาจทำให้สับสนในบางครั้ง
bastibe

30
โอ้ขอบคุณสำหรับสิ่งนั้น! :-) ฉันจ้องมอง QtDesigner (ดี QtCreator เหมือนกันที่นั่น) เป็นเวลาครึ่งชั่วโมงแล้วและไม่สามารถเข้าใจได้ว่าทำไมวิดเจ็ตส่วนกลางของฉันไม่ปรับขนาดเป็นสูงสุด - จนกระทั่งฉันเห็นว่าไอคอนเล็ก ๆ น้อย ๆ คำตอบของคุณวนไปวนมามีเครื่องหมาย 'ปิดใช้งาน' สีแดงอยู่เหนือคำตอบ คลิกเพียงครั้งเดียวที่ปุ่ม 'วางแนวตั้ง' ในแถบเครื่องมือผู้สร้างและปัญหาจะได้รับการแก้ไข ครั้งแรกที่ฉันสังเกตเห็นแถบเครื่องมือ BTW นั้นง่ายต่อการมองข้าม ...
ssc

8
ในการแสดงความคิดเห็นเกี่ยวกับ Jens answer: บนเครื่อง Mac ให้คลิกที่วิดเจ็ตระดับบนสุด (ไม่จำเป็นต้องใช้ชื่อว่า "centralWidget") จากนั้นคลิกที่ "Form" ในแถบเมนูและเลือกหนึ่งในเค้าโครง
hnasarat

2
หากใครยังสงสัยสามารถทำได้บน Windows ใน QT5.8 / QT Creator 4.2.1 โดยคลิกที่ระดับบนสุด "centralWidget" (ซึ่งมีเครื่องหมายสีแดงอยู่เล็กน้อย) จากนั้นไปที่ Tools> Form Editor> Lay Out ในแนวตั้ง (หรือแนวนอน)
LeoR

41

ฉันพบว่ามันเป็นไปไม่ได้ที่จะกำหนดโครงร่างให้กับ centralwidget จนกว่าฉันจะเพิ่มลูกอย่างน้อยหนึ่งลูกไว้ข้างใต้ จากนั้นฉันสามารถไฮไลต์ไอคอนเล็ก ๆ ที่มีเครื่องหมาย 'ปิดการใช้งาน' สีแดงจากนั้นคลิกที่เค้าโครงในแถบเครื่องมือตัวออกแบบที่ด้านบน


4
นี่มันน่าโมโห การกำหนดเค้าโครงให้กับวิดเจ็ตส่วนกลางควรเป็นการดำเนินการที่ไม่สำคัญที่สุดใน Qt Creator แต่การทำเช่นนั้นจำเป็นต้องรวมโซลูชันที่ไม่ใช้งานง่ายนี้เข้ากับโซลูชันที่ไม่ได้ใช้งานง่ายเท่า ๆ กันของJens ( ตามลำดับที่แน่นอน ) ในขณะที่ระบบอัตโนมัติที่จัดทำโดย Qt Creator ยังคงเอาชนะแบบสำเร็จรูปที่ทำซ้ำ ๆ ได้ด้วยระยะขอบที่กว้าง แต่การแฮ็คประสบการณ์การใช้งานที่น่ากลัว (UX) ทำให้ฉันมีอาการตากระตุกใหม่
Cecil Curry

@Cecil Curry แม้หลังจากวิธีแก้ปัญหานั้นฉันใช้เวลา 20 นาทีในการตระหนักว่าฉันควร ... เพราะ centralWidget ในกรณีที่ไม่มีตัวเลือกเมนูบริบทในการเพิ่มเลย์เอาต์เท่านั้น ... มีเพียงปุ่มไมโครสโคปในแถบเครื่องมือที่ดูเหมือนไม่ได้ใช้งาน
Swift - Friday Pie

3
เขียนความคิดเห็นนี้ตั้งแต่หลังจากแก้ปัญหาแล้วฉันก็มีปัญหาในการค้นหาตัวเลือก คุณต้องเลือก centralWidget จากนั้นคลิกขวาในพื้นที่ว่างของแอพของคุณไปที่ 'Layout' ในเมนูตามบริบทที่เปิดขึ้นจากนั้นเลือกเค้าโครงที่คุณต้องการ สิ่งนี้ใช้ได้ผลสำหรับฉันอย่างน้อย (QT5 โดยใช้ QT Designer 5.11.1)
kushy

11

คำตอบที่ยอมรับ (รูปภาพ) ผิดอย่างน้อยก็อยู่ใน QT5 คุณควรกำหนดโครงร่างให้กับวัตถุ / วิดเจ็ตรูทแทน (ชี้ไปที่รูปภาพข้างต้นควรเป็นรูปMainWindowแทนcentralWidget) โปรดทราบว่าคุณต้องมีอย่างน้อยหนึ่งรายการที่QObjectสร้างไว้ด้านล่างเพื่อให้สามารถใช้งานได้ ทำสิ่งนี้และ UI ของคุณจะตอบสนองต่อการปรับขนาดหน้าต่าง


2

คุณจำเป็นต้องเปลี่ยนประเภทเค้าโครงเริ่มต้นของวัตถุ QWidget ระดับบนสุดจากประเภทโครงร่างแบ่งเป็นประเภทโครงร่างอื่น ๆ (เค้าโครงแนวตั้งเค้าโครงแนวนอนเค้าโครงตารางเค้าโครงแบบฟอร์ม) ตัวอย่างเช่น: ป้อนคำอธิบายภาพที่นี่

เพื่อสิ่งนี้:

ป้อนคำอธิบายภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.