2010-04-09 29 views

Trả lời

4

QWidget đã hỗ trợ bố cục thông qua các chức năng layout()setLayout(...). Đối tượng bố trí điều khiển vị trí của các tiện ích con khác nhau có thể được thêm vào bố cục. Ngoài ra, nó đảm bảo kích thước chính xác kích thước phụ tùng của nó dựa trên số constraints được chỉ định. Nếu bố cục chưa có tiện ích con, thì ngay sau khi bố cục được đính kèm với tiện ích con có số setLayout(), nó sẽ đặt kích thước của tiện ích mẹ đó.

Nhưng, một số tiện ích giống trình quản lý bố cục hơn một tiện ích con, chẳng hạn như QSplitterQTabWidget. Hãy xem xét, ví dụ, QSplitter. Mặc dù một tiện ích duy nhất, nó trình bày hai khu vực khác nhau có thể được làm việc với. Trong trường hợp này, một trình quản lý bố cục duy nhất cho hai khu vực khác nhau không thực sự hợp lý. Giống như QSplitter, QTabWidget có một số hành vi mà làm cho một bố trí duy nhất không chỉ không cần thiết nhưng không hữu ích.

Tôi nghĩ rằng đó là sự kết hợp giữa bố cục và tiện ích con khiến việc tách bố cục và tiện ích đôi khi gây nhầm lẫn.

+0

Nếu bạn sử dụng ngôn ngữ của mẫu thiết kế Model-view-controller. Có đúng không khi nói rằng "bố cục" là bộ điều khiển? hoặc bạn không thể liên hệ điều này với mẫu thiết kế "model-view-controller"? –

2

Không, bố cục không phải là tiện ích hoặc vùng chứa. Bố cục giống như "người trợ giúp" được gắn vào cửa sổ và tìm ra nơi tốt nhất để đặt từng tiện ích.

Ví dụ này từ các tài liệu Qt sẽ giúp (http://qt.nokia.com/doc/4.2/layout.html):

QWidget *window = new QWidget; 
QPushButton *button1 = new QPushButton("One"); 
QPushButton *button2 = new QPushButton("Two"); 
QPushButton *button3 = new QPushButton("Three"); 
QPushButton *button4 = new QPushButton("Four"); 
QPushButton *button5 = new QPushButton("Five"); 

QHBoxLayout *layout = new QHBoxLayout; 
layout->addWidget(button1); 
layout->addWidget(button2); 
layout->addWidget(button3); 
layout->addWidget(button4); 
layout->addWidget(button5); 

window->setLayout(layout); 
window->show(); 
3

QLayout s là các nhà quản lý bố trí. Họ quản lý việc định vị và thay đổi kích thước của các widget bên trong một widget phụ huynh. Từ tài liệu:

Bố cục là cách thanh lịch và linh hoạt để tự động sắp xếp tiện ích con trong vùng chứa của chúng. Mỗi tiện ích con báo cáo yêu cầu kích thước của nó cho bố cục thông qua các thuộc tính sizeHint và sizePolicy và bố cục phân phối không gian có sẵn cho phù hợp.

Ví dụ: đặt bố cục tiện ích thành QHBoxLayout sẽ dẫn đến các tiện ích con được đặt theo chiều ngang.

Bạn có thể đọc thêm về nó here.

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