Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如果我将该项设置为可选,则QGraphicsPixmapItem太大一个像素_Qt_Qgraphicsitem_Qpixmap - Fatal编程技术网

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);
}

谢谢我想知道为什么。。。必须允许绘制选择矩形,这也是我的假设。