我在寻找最有效的方法,以大小QGraphicsItem
基于给定长度QString
,以便文本是的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);
}
什么样的代码可能我添加到构造,使我的要求工作? 根据设置字符串的总长度宽度,使得假设每个字符有多少像素的空间占用是最明显的解决方案,但我正在寻找的东西多一点优雅。 有任何想法吗? 预先感谢您的任何帮助。