2009-08-26 41 views

Trả lời

60

Bạn có thể sử dụng QFontMetrics lớp - xem phương thức width() có thể cung cấp cho bạn chiều rộng của một QString nhất định.

QFont myFont(fontName, fontSize);; 
QString str("I wonder how wide this is?"); 

QFontMetrics fm(myFont); 
int width=fm.width(str); 
6

hơi muộn, nhưng có lẽ nó giúp cho người

trong paintEvent

QString text("text"); 
QFontMetrics fm = painter.fontMetrics(); 
int width = fm.width(text); 

Chears Alexander

5

Như một sự bổ sung cho câu trả lời của @ Paul, tôi thấy rằng khi vẽ văn bản (Qt4.8 trên Linux), chiều rộng của một văn bản thực sự được vẽ so với chiều rộng của những gì trả về QFontMetrics::boundingRect thường bị tắt. Trong trường hợp của tôi, bức tranh thường quá rộng.

Nếu bạn muốn kết quả chính xác khi vẽ văn bản (ví dụ như hình chữ nhật kích thước bạn vẽ xung quanh văn bản), hãy sử dụng trực tiếp các chức năng boundingRect được cung cấp trực tiếp bởi QPainter.

+0

Tìm thấy tình huống tương tự trên OS X với Qt 5.5.1. Chiều cao đã tắt. Tôi đã sử dụng một QFontMetrics độc lập nhưng cần thiết để đặt phông chữ trên họa sĩ và sử dụng trực tiếp boundingRect của nó để đo chính xác văn bản. – kainjow

Các vấn đề liên quan