• 6988阅读
  • 7回复

在View/items中 重写item的paint() [复制链接]

上一主题 下一主题
离线20044454
 
只看楼主 倒序阅读 楼主  发表于: 2009-04-14
一个类似的QGraphicsitem对象函数
canvasview可以放大缩小,实现了,
但item随view变大而变大 
想实现功能要求item不变 ,


如果有别的方法 可以提示一下谢谢
[ 此帖被20044454在2009-04-15 11:25重新编辑 ]
让我做一个Qt的大牛!!!!
离线sbtree
只看该作者 1楼 发表于: 2009-04-14
重新写paint函数
windows 7 + VC++2008 + Qt4.5.2
离线surka
只看该作者 2楼 发表于: 2009-04-14
不太确定你说的意思
如果是view放大item保持不变的话
重写paint在设备坐标系上画图就好了

void YourDerivedItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget /* = 0 */)
{
    painter->save();
    painter->resetMatrix();
    QWidget* w;
    w = widget->parentWidget();
    Q_ASSERT(w != NULL);
    Q_ASSERT(w->inherits("QGraphicsView"));
    QGraphicsView* v;
    v = (QGraphicsView*) w;
    QPoint p = v->mapFromScene(scenePos()); // 得到设备坐标系位置
    ... // 绘制代码
    painter->restore();
}
[ 此帖被surka在2009-04-14 16:22重新编辑 ]
离线20044454
只看该作者 3楼 发表于: 2009-04-14
就是view放大item保持不变的话
const QStyleOptionGraphicsItem* option参数有什么用?

我要使一个list 的数据保持不变 最后怎么处理?
让我做一个Qt的大牛!!!!
离线20044454
只看该作者 4楼 发表于: 2009-04-14
void YourDerivedItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget /* = 0 */)
{
    painter->save();
    painter->resetMatrix();
    QWidget* w;
    w = widget->parentWidget();
    Q_ASSERT(w != NULL);
    Q_ASSERT(w->inherits("QGraphicsView"));
    有什么用?

    QGraphicsView* v;
    v = (QGraphicsView*) w;
    QPoint p = v->mapFromScene(scenePos()); // 得到设备坐标系位置

    painter.darwtext(rect,Qt::Centre,"text");
    在这只是画出来个矩形 没有文字
    painter->restore();
}
[ 此帖被20044454在2009-04-15 11:01重新编辑 ]
让我做一个Qt的大牛!!!!
离线20044454
只看该作者 5楼 发表于: 2009-04-15
自己顶
让我做一个Qt的大牛!!!!
离线20044454
只看该作者 6楼 发表于: 2009-04-15
  QPoint p = v->mapFromScene(scenePos()); // 得到设备坐标系位置
怎么和 painter想关联?
让我做一个Qt的大牛!!!!
离线20044454
只看该作者 7楼 发表于: 2009-04-15
那个做过类似的说下 谢谢了
让我做一个Qt的大牛!!!!
快速回复
限100 字节
 
上一个 下一个