目录
1. 简介
QT4.2开始引入了Graphics View框架用来取代QT3中的Canvas模块,并作出了改进,Graphics View框架实现了模型-视图结构的图形管理,能对大量图元进行管理,支持碰撞检测,坐标变换和图元组等多种方便的功能。在开发中常会遇到绘制图片的需求,现将代码分享如下:
2. 代码示例
头文件:
class ImageItem : public QGraphicsPixmapItem
{
public:
explicit ImageItem(QGraphicsItem *parent = Q_NULLPTR);
void movePos(QPointF pos, QRectF labelRect);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
private:
};
cpp文件
ImageItem::ImageItem(QGraphicsItem *parent)
: QGraphicsPixmapItem(parent)
{
this->setPixmap(QPixmap(":/image/Common/dataframe.png", "png"));
}
void ImageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->setPen(Qt::NoPen);
painter->drawRect(boundingRect());
QGraphicsPixmapItem::paint(painter, option, widget);
}
void ImageItem::movePos(QPointF pos, QRectF labelRect)
{
qreal deltaX = (boundingRect().width() - labelRect.width()) / 2;
qreal deltaY = (boundingRect().height() - labelRect.height()) / 2;
setPos(pos + QPointF(-deltaX, -deltaY));
}