2012-12-13 19 views
5

Ustawienie tekstu dla QTextEdit:QTextEdit :: adjustSize() nie działa?

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

należy owinąć wokół „coś”, tylko zamiast QTextEdit rozwija się do jego maksymalnej szerokości wysokości, nie można go naprawić .. Kiedy wybrać „coś” na metę czas, tylko "Coś" jest podświetlone, bez dodatkowych białych spacji.

Oczekiwania: gdy tekst jest wystarczająco małe, aby zmieścić się na jednej linii, Edycja tekstu nie powinna rozwijać się w wysokości, gdy tekst musi zawijać tylko dodatkowa szerokość linii nie powinny być dodawane maksymalną szerokość.

jeśli adjustSize(); nie nazywa, tekst będzie zawijać na szerokości, który został ustawiony w .ui w Stwórcy, nie będzie się dynamicznie rozwijać poziomo ani pionowo ..

Niektóre Info:

polityka horyzontalna: Rozszerzanie
politykę pionie: MinimumExpanding
minimumSize: 2 x 22
maksymalny rozmiar: 300 x 100
lineWrapMode: WidgetWidth

Odpowiedz

2

Tak, wygląda na to, że nie ma łatwego sposobu liczenia linii w QTextEdit.
adjustSize() jest wykonany dla QWidget i nie został ponownie zaimplementowany dla QTextEdit, jest oparty na sizeHint().
Możesz użyć własnej metody liczenia linii, f.e.

  1. Można użyć QFontMetrics obliczyć szerokość każdego słowa w tekście
  2. Można ustawić wysokość do 22 i zwiększyć ją aż maximumHeight hitted lub pionowe bonusie przewijania.
  3. Możesz uzyskać pewne informacje ze źródeł QTextEdit i podklasować je, ponownie realizując coś (adjustSize()?) Tam.
+0

Dziękuję :) Postaram się obliczyć szerokość tekstu i setGeometry dla QTextEdit odpowiednio. – Noob

+0

Witam, napotkałem ten sam problem. Czy możesz podzielić się rozwiązaniem, jeśli to działa? – Aleksandar