2010-06-30 27 views
17

Tôi có một QComboBox mà tôi đầy QString sử dụng:Làm cách nào để đặt chiều rộng QComboBox cho vừa với mục lớn nhất?

comboBox->addItem(someString); 

Khi tôi bắt đầu ứng dụng GUI của tôi chiều rộng của combobox luôn là 70, ngay cả khi mục nhỏ nhất là lớn hơn nhiều. Làm thế nào tôi có thể tự động thiết lập chiều rộng của một QComboBox, ví dụ, để QString lớn nhất trong comboBox?

Edit:

Sau một số thử nghiệm hơn nữa tôi thấy các giải pháp sau đây:

// get the minimum width that fits the largest item. 
int width = ui->sieveSizeComboBox->minimumSizeHint().width(); 
// set the ComboBoxe to that width. 
ui->sieveSizeComboBox->setMinimumWidth(width); 
+0

Ngoài ra, nếu bạn muốn giữ hộp tổ hợp có cùng kích thước, nhưng mở rộng chiều rộng thả xuống để vừa với chuỗi dài nhất, bạn có thể đặt chiều rộng tối thiểu của chế độ xem: 'ui-> sieveSizeComboBox-> view () -> setMinimumWidth (width); ' – Matthew

Trả lời

6

Theo docs mặc định SizeAdjustPolicyAdjustToContentsOnFirstShow vì vậy có lẽ bạn đang hiển thị nó và sau đó Populating nó?

Hoặc điền trước tiên trước khi hiển thị hoặc thử đặt chính sách thành QComboBox::AdjustToContents.

Edit:

BTW Tôi giả định rằng bạn có QComboBox trong một bố cục phù hợp, ví dụ. QHBoxLayout, do đó gợi ý kích thước/chính sách thực sự đang được sử dụng.

+0

Cảm ơn, có QComboBox đang ở trong QHBoxLayout. Tôi đã thử sửa đổi SizeAdjustPolicy nhưng nó không có hiệu lực, tôi cũng đã cố gắng điền vào QComboBox trước khi gọi ui-> setupUi (điều này); trong hàm tạo nhưng chương trình bị lỗi. QComboBox được tạo ra bằng cách sử dụng Qt Creator, tôi không biết nếu nó có thể cư nó trước khi nó được beeing hiển thị. – Linoliumz

+0

Bạn đã đặt gì làm 'SizePolicy' trên combobox? –

+0

Có ý nghĩa khi cố gắng kết hợp trước khi gọi ui-> setupUi (điều này) sẽ gây ra sự phân đoạn, vì đối tượng QComboBox chưa được khởi tạo. Đặt AdjustPolicy thành QComboBox :: AdjustToContents. – Casey

8

Qt (4.6) tài liệu trực tuyến có này để nói về QComboBox:

enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon } 

tôi sẽ đề nghị

  1. đảm bảo SizeAdjustPolicy là thực sự được sử dụng

  2. thiết enum để AdjustToContents. Khi bạn đề cập đến tệp .ui, tôi khuyên bạn nên làm điều đó trong Trình thiết kế. Thông thường không nên có bất cứ điều gì ưa thích trong nhà xây dựng của bạn ở tất cả những thứ liên quan đến bạn trong Designer.

+0

Vui lòng cho tôi biết cách thực hiện điều này trên Qt 3.3.6? – shan

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