2012-12-13 18 views
5

Setting văn bản cho QTextEdit:QTextEdit :: adjustSize() không hoạt động?

te->setPlainText(“Something”) ; 
te->adjustSize(); 

nên quấn quanh “cái gì đó” mà thôi, thay vào đó là QTextEdit đang mở rộng đến tối đa của nó Width-Chiều cao, không thể sửa chữa nó .. Khi tôi chọn “Something” trên chạy thời gian, chỉ "Cái gì đó" được tô sáng, không thêm khoảng trắng thừa nào.

Kỳ vọng: khi văn bản đủ nhỏ để vừa trên một dòng, chỉnh sửa văn bản không được mở rộng, khi văn bản cần bọc, chỉ nên thêm chiều rộng đường thừa chứ không phải chiều rộng tối đa.

nếu adjustSize(); không được gọi, văn bản sẽ quấn vào độ rộng đã được thiết lập trong .ui trong Đấng Tạo Hóa, sẽ không tự động mở rộng theo chiều ngang hay chiều dọc ..

Một số Thông tin:

Policy ngang: Mở rộng
Vertical chính sách: MinimumExpanding
minimumSize: 2 × 22
Kích tối đa: 300 × 100
lineWrapMode: WidgetWidth

Trả lời

2

Có, có vẻ như không có cách nào dễ dàng để đếm các dòng trong QTextEdit.
adjustSize() được thực hiện cho QWidget và không được thực hiện lại cho QTextEdit, dựa trên sizeHint().
Bạn có thể sử dụng phương pháp của riêng mình để đếm các dòng, ví dụ:

  1. Bạn có thể sử dụng QFontMetrics để tính toán độ rộng của mỗi từ trong văn bản của bạn
  2. Bạn có thể thiết lập chiều cao đến 22 và tăng nó cho đến khi maximumHeight hitted hoặc dissapears thanh cuộn dọc.
  3. Bạn có thể nhận được một số thông tin từ các nguồn của QTextEdit chính nó và phân lớp nó, reimplementing một cái gì đó (adjustSize()?) Ở đó.
+0

Cảm ơn bạn :) Tôi sẽ cố gắng tính chiều rộng của văn bản và setGeometry cho QTextEdit tương ứng. – Noob

+0

Xin chào, tôi đã gặp phải vấn đề tương tự. Bạn có thể chia sẻ giải pháp nếu nó hoạt động không? – Aleksandar