2009-10-02 36 views
31

Tôi đã thiết kế một QMainWindow với thiết kế QtCreator's. Nó bao gồm các widget trung tâm mặc định (một QWidget) trong đó có một QVBoxLayout với tất cả các vật dụng khác trong đó. Bây giờ mọi thứ tôi muốn, là QVBoxLayout sẽ tự động chiếm toàn bộ không gian hình chữ nhật của vật dụng trung tâm.Bố cục Qt trên QMainWindow

Tôi làm cách nào để thực hiện việc này? Tôi không tìm thấy bất kỳ tài sản có thể sử dụng nào trong các thuộc tính widget trung tâm cũng như các thuộc tính QVBoxLayout's.

Trả lời

35

Bạn không phải tạo QVBoxLayout theo cách thủ công. Chỉ cần chọn trung tâm QWidget và nhấn nút tạo bố cục.

alt text

+0

Rất hay, đó là những gì tôi đã làm sau. Cảm ơn! – Milan

+16

Lưu ý rằng bạn phải có ít nhất một tiện ích đã có trên tiện ích con trung tâm cho các nút bố cục được bật –

10

Thêm ít nhất một widget trên MainWindow của bạn. Sau đó chọn cửa sổ của bạn bằng cách nhấp vào nó và nhấp vào nút VerticalLayout ở đầu QTCreator. Bạn bố trí dọc được tự động thêm vào widget trung tâm và điền vào tất cả các bề mặt.

+0

Nhiều hoặc ít hơn giống như câu trả lời của gs, nhưng cảm ơn! – Milan

+2

Cảm ơn bạn. Tôi không thể hiểu được vì tôi không có bất kỳ tiện ích nào trên MainWindow của tôi, vì vậy câu trả lời của bạn hữu ích nhất –

55

Nếu bạn muốn làm điều đó với mã thay vì sử dụng QtCreator, bạn có thể thiết lập cách bố trí trong một QWidget và sau đó thiết lập các QWidget như widget trung tâm của cửa sổ chính như thế này:

#include <QtGui> 
#include <QWidget> 
#include <QHBoxLayout> 
#include "mainwindow.h" 

MainWindow::MainWindow() { 

     // Set layout 
     QHBoxLayout *layout = new QHBoxLayout; 
     layout->addWidget(myWidget1); 
     layout->addWidget(myWidget2); 

     // Set layout in QWidget 
     QWidget *window = new QWidget(); 
     window->setLayout(layout); 

     // Set QWidget as the central layout of the main window 
     setCentralWidget(window); 

} 
+1

Cảm ơn bạn rất nhiều! Nhưng tôi không hiểu ... lý do đằng sau nhu cầu được giới thiệu để tạo ra một widget mới là gì? Nó sẽ không trực quan hơn để chỉ cho phép bố trí được áp dụng cho cửa sổ chính? – User1291

3

Đây là đã được trả lời, nhưng cá nhân tôi thích giữ tất cả các phần tử kiểm soát bố cục được thêm theo cách thủ công vào biểu mẫu. Tôi không thêm điều khiển trong các tập tin lớp, tôi chỉ đơn thuần là treo lên các tín hiệu/khe để ẩn/hiển thị các widget liên quan đến logic trong lớp, trong lớp.

Để thêm bố cục theo cách thủ công vào bất kỳ tiện ích nào, trước tiên bạn phải thêm ít nhất một tiện ích/điều khiển con. Điều đó không hoàn toàn rõ ràng với tôi và tôi đã cố gắng thêm bố cục trước.

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