2012-05-21 41 views
6

Có cách nào để làm cho thuộc tính layoutStretch luôn được tuân theo không? Ví dụ. Tôi có nó đặt là "1,3,2", nhưng sau đó một widget (một nhãn) trong phần đầu tiên ("1" trong "1,3,2") mở rộng (khi thêm văn bản được thêm vào), và sau đó tỷ lệ 1: 3: 2 không còn được tôn trọng nữa. Đó là, tỷ lệ "1: 3: 2" biến thành một cái gì đó giống như "3: 1: 3".Sửa kích thước bố cục

Trả lời

7

Bạn nên xem tài sản QWidget::sizePolicy. Nó kiểm soát cách bố trí tôn trọng các sizeHint() của trẻ em của nó khi nó cập nhật các hình học.

Vì vậy, những gì bạn cần làm là: Hãy bố trí bỏ qua sizeHints ngang của widget con bằng cách thiết lập sizePolicy ngang của ba widget trẻ QSizePolicy::Ignored:

QLabel *label = ...; 
... 
label->setSizePolicy(QSizePolicy::Ignored, label->sizePolicy().verticalPolicy()); 

(Đối số thứ hai sẽ đảm bảo rằng Tất nhiên, bạn nên đặt chính sách kích thước của mọi tiện ích con, mã mẫu này chỉ dành cho nhãn.)

Lưu ý rằng nội dung bố cục của bạn phải là vật dụng; Tôi nghĩ rằng bố trí lồng nhau không thể được chỉ định một chính sách kích thước (nhưng tôi có thể sai). Ít nhất bằng cách sử dụng QtDesigner, không có cách nào để áp dụng chính sách kích thước cho chính bố cục (nếu nó không phải là bố trí của một widget). Xem nhận xét để biết chi tiết.


Trong QtDesigner, bạn có thể thiết lập các sizePolicy của widget con như thế này:

Trước:
enter image description here
co:
enter image description here
Chọn các mục trong bố cục:
enter image description here
Đặt chính sách kích thước ngang để "Bỏ qua":
enter image description here
Kết quả:
enter image description here

+0

trong QtDesigner tôi nhấp vào một trong 3 widget verticalLayout đó là ba đối tượng trong widget horizontalLayout (một trong đó có bố cục 1: 3: 2). Tuy nhiên, không có sizePolicy, chỉ có layoutLeftMargin, layoutTopMargin, layoutRightMargin, layoutBottomMargin, layoutSpacing, layoutStretch và layoutSizeConstraint. –

+0

@DavidDoria Tôi đã thêm ảnh chụp màn hình cho QtDesigner. – leemes

+0

Xin lỗi, tôi đoán tôi vẫn chưa rõ. Tôi có các widget dọcLayout là con của một widget horizontalLayout. Các tiện ích verticalLayout này là các tiện ích con mà tôi muốn sửa tỷ lệ, nhưng chúng không có thuộc tính "sizePolicy". –

Các vấn đề liên quan