如果我将项目设置为可选,QGraphicsPixmapItem是一个太大的像素

时间:2015-09-02 22:57:33

标签: qt qgraphicsitem qpixmap

我的QGraphicsPixmapItem必须报告正确的尺寸 - 其初始尺寸应与原始图片尺寸相符。

如果我选择项目,我会注意到一些奇怪的事情:报告的尺寸是一个像素太大。

这是预期的吗?
对于所有可设置的QGraphicsPixmapItems,此行为是否一致? (因此,我可以覆盖boundingRect()每次从QGraphicsPixmapItem::boundingRect()报告的大小中减去1吗?)

使用任何图片进行简单检查:

QGraphicsPixmapItem p;
p.setFlags(QGraphicsItem::ItemIsSelectable);
QString fileName = QFileDialog::getOpenFileName(0, QObject::tr("Open Image File"),
                 QString(), QObject::tr(
                 "Png files (*.png);;Jpeg files (*.jpg *.jpeg);;Bitmap files (*.bmp)"));
QPixmap pixmap(fileName);
qDebug("%d %d", pixmap.size().width(), pixmap.size().height());
p.setPixmap(pixmap);
qDebug("%f %f", p.boundingRect().width(), p.boundingRect().height());

1 个答案:

答案 0 :(得分:2)

这是预期的行为。如果您查看source code,则会在设置if (d->flags & ItemIsSelectable) { qreal pw = 1.0; return QRectF(d->offset, d->pixmap.size()).adjusted(-pw/2, -pw/2, pw/2, pw/2); } 标志时看到它向每个方向添加半个像素:

SQLBULKCOPY