Bên trong QGraphicsRectItem :: paint(), tôi đang cố gắng vẽ tên của mục trong rect của nó(). Tuy nhiên, đối với mỗi mục khác nhau, chúng có thể có chiều rộng thay đổi và các tên tương tự có thể có độ dài thay đổi.Đối với Qt 4.6.x, cách tự động định kích thước văn bản cho vừa với chiều rộng được chỉ định?
Hiện tại tôi đang bắt đầu với kích thước phông chữ tối đa, kiểm tra xem nó có phù hợp và giảm kích cỡ cho đến khi tôi tìm thấy kích thước phông chữ phù hợp hay không. Cho đến nay, tôi đã không thể tìm thấy một cách nhanh chóng và dễ dàng để làm điều này. Có cách nào tốt hơn, hiệu quả hơn để thực hiện việc này không?
Cảm ơn!
void checkFontSize(QPainter *painter, const QString& name) {
// check the font size - need a better algorithm... this could take awhile
while (painter->fontMetrics().width(name) > rect().width()) {
int newsize = painter->font().pointSize() - 1;
painter->setFont(QFont(painter->font().family(), newsize));
}
}
Xem thêm [câu hỏi này] (http://stackoverflow.com/q/36575192/1329652). –