2009-08-26 12 views

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.

+0

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

Powiązane problemy