Qt 如果我将该项设置为可选,则QGraphicsPixmapItem太大一个像素
我的Qt 如果我将该项设置为可选,则QGraphicsPixmapItem太大一个像素,qt,qgraphicsitem,qpixmap,Qt,Qgraphicsitem,Qpixmap,我的QGraphicsPixmapItem必须报告正确的大小-其初始大小应与原始图像大小匹配 我注意到一些奇怪的事情,如果我选择该项目:大小报告是一个像素太大 这是意料之中的吗? 对于所有设置为可选择的qgraphicspixmapitem,此行为是否一致? (因此,我是否可以覆盖boundingRect()以从每次QGraphicsPixmapItem::boundingRect()报告的大小中减去1?) 简单检查,带有任何图像: QGraphicsPixmapItem p; p.setFla
QGraphicsPixmapItem
必须报告正确的大小-其初始大小应与原始图像大小匹配
我注意到一些奇怪的事情,如果我选择该项目:大小报告是一个像素太大
这是意料之中的吗?对于所有设置为可选择的
qgraphicspixmapitem
,此行为是否一致?(因此,我是否可以覆盖
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());
这是预期的行为。如果查看,您将看到当设置了
ItemIsSelectable
标志时,它会向每个方向添加半个像素:
if (d->flags & ItemIsSelectable) {
qreal pw = 1.0;
return QRectF(d->offset, d->pixmap.size()).adjusted(-pw/2, -pw/2, pw/2, pw/2);
}
谢谢我想知道为什么。。。必须允许绘制选择矩形,这也是我的假设。