Làm thế nào để làm cho một Widget Qt phát triển với kích thước cửa sổ?


89

Tôi muốn có một cái nhỏ QFormLayoutlớn lên để lấp đầy tiện ích con của nó.

Tôi đã tạo một tệp .ui mới bằng cách sử dụng QWidgetmẫu trong Qt Designer. Tôi đặt một QFormLayoutbên trong 'cửa sổ' đó, sau đó đặt một số điều khiển bên trong đó QFormLayout.

Tất cả điều này đều hoạt động hợp lý, nhưng QFormLayoutluôn ở kích thước tôi đặt trong Qt Designer. Tôi muốn QFormLayoutđiền vào widget cha của nó và phát triển / thu nhỏ với nó.

Làm thế nào tôi có thể hoàn thành điều đó?

Câu trả lời:


130

Trong Trình thiết kế, hãy kích hoạt CentralWidget và chỉ định một bố cục, ví dụ: bố cục ngang hoặc dọc. Sau đó, QFormLayout của bạn sẽ tự động thay đổi kích thước.

Hình ảnh của Designer

Luôn đảm bảo rằng tất cả các vật dụng đều có bố cục! Nếu không, tính năng tự động thay đổi kích thước sẽ phá vỡ với tiện ích đó!

Xem thêm

Các điều khiển đòi hỏi phải quá lớn và sẽ không thay đổi kích thước, trong QtDesigner


13
QtDesigner đôi khi có thể hơi khó hiểu.
bastibe

30
oh, CẢM ƠN vì điều đó! :-) Tôi đã nhìn chằm chằm vào QtDesigner (tốt, QtCreator, cùng một thứ ở đó) trong nửa giờ và không thể tìm ra lý do tại sao tiện ích trung tâm của tôi không thay đổi kích thước thành tối đa - cho đến khi tôi phát hiện ra biểu tượng nhỏ bé. đã khoanh tròn trong câu trả lời của bạn có dấu 'tắt' màu đỏ trên đó. một cú nhấp chuột vào nút 'bố trí theo chiều dọc' trong thanh công cụ của trình tạo và sự cố đã được khắc phục. Lần đầu tiên tôi thông báo rằng thanh công cụ BTW, dễ dàng bỏ qua ...
ssc

8
Để nhận xét về câu trả lời của Jens: Trên máy mac, nhấp vào tiện ích con cấp cao nhất (không nhất thiết phải có tên là "centralWidget") sau đó nhấp vào "Biểu mẫu" trên thanh menu và chọn một trong các bố cục.
hnasarat

2
Nếu ai đó vẫn còn thắc mắc, điều này được thực hiện trên Windows trong QT5.8 / QT Creator 4.2.1 bằng cách nhấp vào "centralWidget" cấp cao nhất (có một chút dấu đỏ trên đó) và sau đó đi tới Công cụ> Trình chỉnh sửa biểu mẫu> Bố trí Theo chiều dọc (hoặc chiều ngang).
LeoR

41

Tôi thấy không thể chỉ định bố cục cho tiện ích trung tâm cho đến khi tôi đã thêm ít nhất một con vào bên dưới nó. Sau đó, tôi có thể đánh dấu biểu tượng nhỏ với dấu 'tắt' màu đỏ và sau đó nhấp vào một bố cục trong thanh công cụ Designer ở trên cùng.


4
Điều này thật đáng buồn. Gán bố cục cho tiện ích con trung tâm phải là thao tác đơn giản nhất trong Qt Creator. Thay vào đó, làm như vậy yêu cầu kết hợp giải pháp không trực quan cao này với giải pháp không trực quan tương đương của Jens ( theo thứ tự chính xác đó ). Mặc dù tính năng tự động hóa được cung cấp bởi Qt Creator vẫn đánh bại các bản soạn thảo lặp đi lặp lại với biên độ rộng, nhưng việc hack xung quanh trải nghiệm người dùng (UX) kinh khủng của nó đã mang đến cho tôi một sự kinh ngạc mới.
Cecil Curry

@Cecil Curry ngay cả sau giải pháp đó, tôi đã mất 20 phút để nhận ra mình nên làm gì ... bởi vì centralWidget chỉ trong trường hợp không có tùy chọn menu ngữ cảnh để thêm bố cục ... chỉ có một nút vi mô trong thanh công cụ trông giống như không hoạt động
Swift - Friday Pie,

3
Viết bình luận này vì ngay cả sau các giải pháp ở đây, tôi vẫn gặp khó khăn khi tìm ra tùy chọn. Bạn phải chọn CentralWidget, sau đó nhấp chuột phải vào một số không gian trống của ứng dụng, đi tới 'Bố cục' trong menu ngữ cảnh đã mở ra và sau đó chọn bố cục bạn muốn. Điều này đã làm việc cho tôi, ít nhất (QT5, sử dụng QT Designer 5.11.1).
kushy

11

Câu trả lời được chấp nhận (hình ảnh của nó) là sai, ít nhất là bây giờ trong QT5. Thay vào đó, bạn nên gán một bố cục cho đối tượng / tiện ích gốc (trỏ đến hình ảnh đã nói ở trên, nó phải là cái MainWindowthay vì centralWidget). Cũng lưu ý rằng bạn phải có ít nhất một cái QObjectđược tạo bên dưới nó để nó hoạt động. Làm điều này và ui của bạn sẽ trở nên đáp ứng với việc thay đổi kích thước cửa sổ.


0

Bạn cần thay đổi kiểu bố trí mặc định của đối tượng QWidget cấp cao nhất từ ​​kiểu bố cục Break sang các kiểu bố cục khác (Bố cục dọc, Bố cục ngang, Bố trí lưới, Bố trí biểu mẫu). Ví dụ: nhập mô tả hình ảnh ở đây

Đối với một cái gì đó như thế này:

nhập mô tả hình ảnh ở đây

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.