Я ищу наиболее эффективный способ определения размера QGraphicsItem
на основе длины заданного QString
, так что текст всегда содержится в границах QGraphicsItem. Идея состоит в том, чтобы держать QGraphicsItem
как можно меньшим, сохраняя при этом текст с разборчивым размером. Идеальным было бы объединение на несколько линий с определенным порогом ширины. Например,Размер QGraphicsItem на основе длины строки
TestModule::TestModule(QGraphicsItem *parent, QString name) : QGraphicsPolygonItem(parent)
{
modName = name;
// what would be the best way to set these values?
qreal w = 80.0;
qreal h = 80.0;
QVector<QPointF> points = { QPointF(0.0, 0.0),
QPointF(w, 0.0),
QPointF(w, h),
QPointF(0.0, h) };
baseShape = QPolygonF(points);
setPolygon(baseShape);
}
void TestModule::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QBrush *brush = new QBrush(Qt::gray, Qt::SolidPattern);
painter->setBrush(*brush);
painter->drawPolygon(baseShape);
painter->drawText(QPointF(0.0, 40.0), modName);
}
Какой код я могу добавить в конструктор, чтобы выполнить мое требование? Установка ширины, основанная на общей длине строки, делает предположения о том, сколько пикселей занимает каждый символ, является наиболее очевидным решением, но я ищу что-то более элегантное. Есть идеи? Спасибо заранее за любую помощь.
только то, что я искал, спасибо. – c0nn