W jaki sposób zmierzyć szerokość (w pikselach) fragmentu tekstu renderowanego przy użyciu danej czcionki/stylu?Pomiar szerokości tekstu w Qt
35
A
Odpowiedz
60
Można użyć klasy QFontMetrics - patrz metoda width(), która może dać szerokość danego parametru QString.
QFont myFont(fontName, fontSize);;
QString str("I wonder how wide this is?");
QFontMetrics fm(myFont);
int width=fm.width(str);
6
nieco późno, ale może to pomoże komuś
w paintEvent
QString text("text");
QFontMetrics fm = painter.fontMetrics();
int width = fm.width(text);
Chears Aleksandra
5
Jako dodatek do odpowiedzi przez @Paul, stwierdziliśmy, że podczas malowania tekstu (Qt4.8 na Linuksie) szerokość faktycznie malowanego tekstu w porównaniu do szerokości tego, co zwraca, często jest wyłączona. W moich przypadkach obraz był często zbyt szeroki.
Jeśli chcesz uzyskać dokładne wyniki podczas malowania tekstu (na przykład do wymiarowania prostokątów rysowanych wokół tekstu), lepiej użyj funkcji boundingRect
dostarczonych bezpośrednio przez QPainter
.
Powiązane problemy
- 1. Pomiar tekstu w WPF
- 2. pomiar tekstu na skalowanym płótnie
- 3. Qt QProgressBar - wyrównanie tekstu
- 4. W Qt 4.6.x, w jaki sposób automatycznie dopasować rozmiar tekstu do określonej szerokości?
- 5. Sposób rozpoznawania szerokości tekstu w SKLabelNode
- 6. Kreator Qt: edycja tekstu wieloliniowego
- 7. Qt QPushbutton Ikona powyżej tekstu
- 8. Ustaw treść tekstu QGraphicsTextItem o dokładnej wysokości i szerokości.
- 9. Pomiar przełączania
- 10. Algorytm szacowania szerokości tekstu na podstawie zawartości
- 11. Znacznik p do dymanicznej szerokości tekstu
- 12. Jak utworzyć interaktywny widget edycji tekstu Qt?
- 13. QTextEdit z różnymi kolorami tekstu (Qt/C++)
- 14. Jak rozpocząć pomiar w połowie?
- 15. Błąd szerokości z wcięciem tekstu negatywowego w CSS
- 16. Ogranicz szerokość obramowania do szerokości tekstu w elemencie bloku
- 17. Przepełnienie tekstu w elipsie na dynamicznym elemencie szerokości
- 18. Pomiar wydajności PHP
- 19. dokładny pomiar czasu
- 20. Pomiar wydajności algorytmu klasyfikacji
- 21. Pomiar rozdzielczości `std :: clock()`
- 22. Dokładny pomiar wielkości obiektów
- 23. Konwersja tekstu japońskiego na pełnej szerokości na połowę szerokości (zen-kaku na han-kaku)
- 24. Zatrzymaj wprowadzania tekstu ze 100% szerokości i 10px wyściółka wykraczające poza 100% szerokości
- 25. Get fizyczny rozmiar ekranu w Qt
- 26. Kod Java do zawijania linii tekstu do maksymalnej szerokości linii
- 27. Pomiar zużycia pamięci strony internetowej
- 28. Pomiar poziomu za pomocą AVAudioEngine
- 29. Pomiar ruchu w sieci z Indy
- 30. Pomiar pamięci szczytowej długotrwałego procesu w Linuksie
Ta sama sytuacja wystąpiła w systemie OS X z Qt 5.5.1. Wysokość była wyłączona. Używałem samodzielnego QFontMetrics, ale musiałem ustawić czcionkę na malarzu i użyć jej boundingRect bezpośrednio do dokładnego zmierzenia tekstu. – kainjow