Bố cục tự động mở rộng với Qt-Designer


217

Tôi đang sử dụng Trình thiết kế Qt.

Tôi muốn tạo một QVBoxLayoutcái sẽ tự động mở rộng để lấp đầy toàn bộ cửa sổ.

Bố cục của phần QVBoxLayoutcòn lại cố định.

Làm cách nào tôi có thể khiến QVBoxLayoutmở rộng và lấp đầy toàn bộ cửa sổ thông qua trình thiết kế?


Nếu bạn chỉ muốn sử dụng bố cục trong Trình thiết kế Qt, vui lòng tham khảo các mẹo dưới đây: stackoverflow.com/questions/1508939/qt-layout-on-qmainwindow

Câu trả lời:


366

Sau khi tạo QVBoxLayoutTrình thiết kế Qt của bạn , nhấp chuột phải vào nền của tiện ích / hộp thoại / cửa sổ của bạn (không phải QVBoxLayout, nhưng tiện ích mẹ) và chọn Bố cục -> Bố trí trong Lưới từ dưới cùng của menu ngữ cảnh. Các QVBoxLayoutbây giờ sẽ kéo dài để phù hợp với cửa sổ và sẽ thay đổi kích thước tự động khi toàn bộ cửa sổ được thay đổi kích cỡ.


6
Cảm ơn bạn, tôi cũng đang tìm kiếm một giải pháp cho vấn đề này.
Simon H.

35
Trên thực tế, bạn không cần phải tạo bố cục Lưới. Thay vì tự tạo QVBoxLayout, hãy bỏ chọn tất cả các mục và nhấp vào nền của tiện ích. Sau đó chọn Lay Out -> Lay Out theo chiều dọc.
Michal Kottman

3
@Michal Kottman: Điều đó chỉ hoạt động tại thời điểm thiết kế. Nó sẽ không thay đổi bố cục khi người dùng thay đổi kích thước cửa sổ khi chạy.
Jay

5
Cả lưới và bố trí dọc làm việc cho tôi lúc thiết kế và thời gian chạy.
AndiDog

2
Tôi muốn thêm một chi tiết nhỏ: nếu bạn muốn thêm bố cục tự kéo dài vào trang QTabWidget , bạn thực sự không thể nhấp chuột phải vào nền của trang, vì bạn sẽ chọn QTabWidget chứ không phải tab có liên quan. Bạn phải nhấp chuột phải vào nhãn tab như được hiển thị trong cửa sổ thiết kế, sau đó chọn Lay Out -> Lay Out in a Grid
Emanuele Cipolla

15

Theo các tài liệu , cần phải có một bộ bố trí cấp cao nhất.

Bố cục cấp cao nhất là cần thiết để đảm bảo rằng các widget của bạn sẽ thay đổi kích thước chính xác khi cửa sổ của nó được thay đổi kích thước. Để kiểm tra xem bạn đã đặt bố cục cấp cao nhất chưa, hãy xem trước tiện ích của bạn và thử thay đổi kích thước cửa sổ bằng cách kéo kẹp kích thước.

Bạn có thể đặt một bằng cách xóa lựa chọn và nhấp chuột phải vào biểu mẫu và chọn một trong các bố cục có sẵn trong menu ngữ cảnh.

Bố trí Qt


2

Tôi đã cố gắng tìm một thuộc tính "phù hợp với màn hình" nhưng không có thuộc tính đó.

Nhưng việc đặt "maxSize" của widget thành "một số lớn" (như 2000 x 2000) sẽ tự động điều chỉnh widget cho không gian của widget cha.


6
Điều gì xảy ra với kỹ thuật này trên MacBook Pro có màn hình Retina (2880x1800)?
ta.speot.is

1
Chỉ cần đặt nó thành số tối đa nó sẽ chấp nhận (mà Nhà thiết kế chỉ cho tôi là 16777215) và nó sẽ hoạt động trên mọi kích thước màn hình.
andreb

0

Khi bạn đã thêm bố cục của mình với ít nhất một tiện ích trong đó, hãy chọn cửa sổ của bạn và nhấp vào nút "Cập nhật" của QtDesigner. Giao diện sẽ được thay đổi kích thước ở kích thước tối ưu nhất và bố cục của bạn sẽ phù hợp với toàn bộ cửa sổ. Sau đó, khi thay đổi kích thước cửa sổ, bố cục sẽ được thay đổi kích thước theo cùng một cách.


Tôi nghĩ rằng khi người dùng thay đổi kích thước toàn bộ cửa sổ, bố cục dọc (và do đó nội dung của nó) sẽ kéo dài để phù hợp với nó. Tôi không quan tâm nó trông như thế nào trong Trình thiết kế Qt.
Elazar Leibovich

-7

Đặt verticalPolicy & verticalPolicy cho các điều khiển / widget thành "Preferred" .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.