2008-10-24 13 views
12

Tôi đã có một hộp thoại phức tạp, và nó có đầy đủ khoảng trống và tôi không thể thu hẹp nó. Trong Designer, nó có rất nhiều thành phần sau đó được ẩn động và một số được thêm động. Tôi đã thêm vào bán phá giá các chính sách kích thước, gợi ý kích thước, và kích thước tối thiểu, nhưng vẫn không thể tìm ra lý do tại sao Qt sẽ không cho phép tôi kéo nó nhỏ hơn.Làm thế nào để bạn gỡ lỗi các vấn đề bố cục Qt

Phải có một số công cụ hoặc kỹ thuật để khắc phục sự cố này.

Vui lòng chia sẻ.

Trả lời

4

Tôi không biết bất kỳ công cụ nào để thực hiện việc này, nhưng tôi đã quản lý nó trước bằng cách thay đổi bảng màu của các phần tử khác nhau trong hộp thoại, sau đó xem xét những gì đang chiếm nhiều hơn (hoặc ít hơn) và tập trung điều tra của tôi vào các yếu tố đó.

Nói chung, hãy đảm bảo bạn đã đặt hộp thoại thành kích thước cố định. Điều đó bit tôi một lần là tốt.

1

Có vẻ như chúng tôi có thể sử dụng tương đương với chế độ kiểm tra số liệu CSS và yếu tố Firebug. Phần khó nhất của một công cụ như vậy sẽ có hiệu quả để tìm ra và truyền đạt lý do tại sao một chính sách bố cục riêng lẻ đang sử dụng hoặc không sử dụng một giá trị kích thước nhất định trong một widget.

1

Thật khó để nói mà không nhìn thấy bố cục của bạn, nhưng tôi thấy rất nhiều vấn đề thay đổi kích thước như bạn mô tả do sử dụng QGridLayout. Điều lớn nhất trong một cột hoặc hàng, sẽ xác định độ rộng tối thiểu của cột đó. Tương tự cho một hàng.

Nếu bạn đang sử dụng QGridLayout, bạn có thể thử thực hiện mọi thứ span columns/rows.

Tôi cũng khuyên bạn nên thử tất cả các cấu hình bố cục khác nhau của bạn trong Trình thiết kế và thử nghiệm bằng cách thay đổi kích thước. Chúng tôi không thực sự sử dụng Nhà thiết kế nơi tôi làm việc, nhưng tôi luôn sử dụng nó để kiểm tra và gỡ lỗi các ý tưởng bố cục.

3

Bạn có thể chụp tín hiệu QApplication :: focusChanged (QWidget *, QWidget *) và thay đổi nền của tiện ích hiện đang được tập trung. Tôi nghĩ điều này sẽ giúp xác định bao nhiêu không gian mỗi tiện ích chiếm.

0

Rất nhiều thử và sai. Tôi đã phát hiện ra rằng chèn trải dài trong các điểm chiến lược thường giúp tôi tạo ra hiệu ứng tôi muốn. Ví dụ, nếu tôi có một QPushButton trong một bố cục mà tôi muốn trở thành kích thước tối thiểu tôi sẽ làm một cái gì đó như sau:

 

QHBoxLayout* layout = new QHBoxLayout; 
QPushButton* myBtn = new QPushButton("Test"); 

layout->insertStretch(1); 
layout->addWidget(myBtn, 0); 
layout->insertStretch(1); 
 

Ngoài ra, đừng quên rằng bạn có thể thiết lập các nội dung lề của một bố cục với setContentsMargins().

Tôi không sử dụng Nhà thiết kế như tôi đã phát hiện ra tôi hiểu hệ thống bố cục tốt hơn nhiều khi tôi chơi với nó trong mã.