2012-03-10 30 views
14

Tôi gặp vấn đề với kích thước trong chế độ xem của tôi được thực hiện bằng Qt khi kéo và thả.Qt splitter bố trí thay đổi kích thước hành vi bằng cách sử dụng Qt Designer

Hãy để tôi bắt đầu với một hình ảnh để giúp tôi giải thích

enter image description here

Đây là MainWindow cho hình thức của tôi.

Điều gì xảy ra là:

Chúng tôi có 4 tiện ích tab. tiện ích tab bên trái có bộ chia ngang cho tiện ích 2 giữa. Tiện ích 2 giữa có bộ chia dọc và bộ chia ngang ở bên trái và bên phải.

Tiện ích phù hợp có bộ chia dọc trên bàn tay trái của nó.

Vì vậy, tất cả các chế độ xem được kết nối bằng bộ tách.

Cuối cùng, biểu mẫu chính sẽ gắn mọi thứ lại với nhau theo một cách có thể thay đổi kích thước bằng bố cục ngang.

Vấn đề là, chiều rộng của tiện ích ngoài cùng bên trái và bên phải được cố định (trong trình thiết kế). Tôi muốn chúng có chiều rộng nhỏ hơn. Một cái gì đó tương tự như:

enter image description here

Bạn có thể xem các widget được thay đổi kích cỡ. Tôi đã có thể làm điều này chạy ứng dụng, và điều chỉnh bằng tay các bộ tách. Có cách nào trong QtDesigner để làm điều này? Tôi đã thử chơi với các chính sách. Tôi đã không thực sự nhận được thêm bất kỳ tuy nhiên. Điều này cho thấy sự thiếu kiến ​​thức về phần của tôi về chính sách? Có lẽ bố trí nói chung?

Tôi nên sử dụng các tùy chọn nào để đạt được bố cục mong muốn bằng QtDesigner. Tôi muốn tránh sử dụng mã.

Hy vọng tôi sẽ sớm có thể giải quyết vấn đề này. Nó phải được nhìn ra một cái gì đó đơn giản ..

+0

Tôi đang sử dụng một splitter cho lần đầu tiên, và tôi không thấy bất cứ điều gì trong thiết kế cho phép tôi để cấu hình vị trí của bộ chia.Tôi sẽ cố gắng để thiết lập nó thông qua mã trong constructor của hộp thoại (có thể cố gắng để kích thước lại các thành phần trên một mặt của splitter đến mức tối thiểu của nó), nhưng vẫn chưa nhận được ở đó. Tôi muốn được nghe những gì người khác nói. – aldo

+0

Rất vui khi không phải là người duy nhất có vấn đề này. Nó sẽ rất đơn giản. Nhưng thiết lập các ràng buộc kích thước như min-width vv dường như không giúp ích gì cho tôi. –

+0

Các kích thước có thể được thiết lập bằng chức năng setStretchFactor của [QSplitter] (http://doc.qt.nokia.com/4.8-snapshot/qsplitter.html#setStretchFactor). Nhưng như bạn đã nhận thấy, nó không thể được thiết lập trong Qt Designer. –

Trả lời

9

Bạn có thể chơi với các thuộc tính "Ngang Stretch" và "Vertical Stretch" để thay đổi vị trí của phần tách.

Ví dụ với cả hai chiều dọc của trung tâm hàng đầu QTabWidget và chiều ngang của trung tâm QSplitter ở 1 và tất cả các giá trị khác được giữ ở 0, bạn sẽ nhận được kết quả mong muốn.

Khi bạn có nhiều giá trị giãn khác 0, kết quả của tỷ lệ (ví dụ: đường thẳng đứng tại 2 và 1 cho 2 trung tâm QTabWidget s => 2/3 và 1/3) không hiển thị trong trình thiết kế nhưng dường như đang hoạt động khi bạn chạy ứng dụng.

PS: Bạn cũng có thể đạt được kết quả tương tự với tab được mã hóa QDockWidget s nhưng không thể thực hiện thanh toán cổng thông qua nhà thiết kế.

+0

Tôi không thể tin nó đơn giản như vậy. Tôi wwere ngay với một trong những đầu tiên, giữa widget và giữa splitter để căng 1 và nó đã làm việc. –

+0

Cảm ơn! Làm việc như người ở ! – aakashbhowmick

1

tôi đặt bắt đầu vị trí đó:

QList<int> list= ui->splitter->sizes(); 
list.replace(0,this->height()/0.3); 
list.replace(1,this->height()/0.7); 
ui->splitter->setSizes(list); 

và nhớ kích thước tối thiểu con phụ tùng

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