Tôi có tiện ích con tùy chỉnh có bố cục tổng thể của QVBoxLayout. Nó chứa một số nhãn, một QFormLayout, một nút, và một căng để ăn tất cả không gian dư thừa. Một trong các nhãn có thể khá lớn vì vậy tôi đang cố gắng đảm bảo rằng không có trường hợp kỳ lạ nào mà văn bản không thể đọc được. Widget được chứa trong QScrollArea để đảm bảo rằng nếu người dùng co lại cửa sổ tổng thể, tất cả các khía cạnh của widget vẫn có thể được nhìn thấy.Cắt nhãn văn bản để đổi kích thước
QLabel xuất hiện để thay đổi kích thước, nhưng khi nó đạt đến một điểm hẹp nhất định, nó chỉ cắt bớt một vài dòng dưới cùng của nhãn và phân bổ khoảng trống cho phần cuối của tiện ích.
Tôi đang làm điều này tất cả trong mã mà không có Nhà thiết kế, vì vậy hoàn toàn có thể là tôi chỉ thiếu một cái gì đó. Các thành phần phụ được thêm vào QVBoxLayout tổng thể theo trình tự sau:
OverallLayout = new QVBoxLayout(this);
Title = new QLabel();
Description = new QLabel();
SubRegion = new QFormLayout();
Button = new QButton();
...
// set text values, wordWrap(true), and Font for labels
OverallLayout->addWidget(Title);
OverallLayout->addWidget(Description);
OverallLayout->addLayout(SubRegion);
OverallLayout->addStrut(MIN_DIST);
OverallLayout->addWidget(Button);
OverallLayout->addStretch(STRETCH_FACTOR);
Kết quả thử nghiệm: Kiểm tra các kết quả trả về từ QLabel của sizeHint() chức năng, các giá trị trả dường như không thay đổi khi các phụ tùng được thu nhỏ theo chiều ngang. Tuy nhiên, QLabel không mở rộng để chiếm nhiều chỗ đứng hơn (153 so với gợi ý 103), chỉ là không đủ để phù hợp với tất cả văn bản. Khi QLabel được hiển thị lần đầu tiên, nó có ít pixel hơn sizeHint nhưng vẫn đủ cho chiều cao heightForWidth của nó. Khi nó được thay đổi kích thước, nó có 30 ít hơn chiều cao heightForWidth của nó nhưng nhiều hơn sizeHint của nó.
Tôi đã kiểm tra và QLabel lớn có giá trị hasHeightForWidth() và wordWrap() được đặt thành true. Tôi đang làm gì sai?
Bạn có thể thêm đoạn mã nơi các tiện ích này đang được thêm vào bố cục không? Tôi nghĩ rằng bạn nên thiết lập kích thước tối thiểu của QLabel bởi setMinimumHeight() để không có cut-off. Ngoài ra, bạn có thể đặt giá trị độ cao tối đa cho phần tử bộ đệm. –
Một cách tôi nghĩ đến việc sửa chữa nó là liên kết đến phương pháp đã thay đổi kích cỡ và có chiều cao tối thiểu được đặt thành giá trị heightForWidth (chiều rộng) cho nhãn Mô tả. Điều này có vẻ như một chút kludgey mặc dù, vì vậy tôi đã tự hỏi những gì đúng cách để có được người quản lý bố trí để làm công việc của mình sẽ được. – ElCraneo
Nhưng còn đề xuất sử dụng 'setMinimumHeight()' thì sao? – jdi