[QT]QT视图标尺功能实现

实现了QT的视图的标尺功能

首先一个继承视图QFrame的类,重载paintEvent,其中用于绘制坐标,坐标的计算是根据绘制间隔线的数据得到的

在里面一层继承视图QGraphicView,重载drawBackground绘制基线,并记录相关数据,比如(线间距离,线段数,缩放比例等)

部分实现代码:

 

ExpandedBlockStart.gif 代码

    
int      cn  =  scene -> coordinateNumber();
    
int      cofs  =  scene -> coordinateOffset();
    
int      sceneHeight  =  height();
    QRectF  rect;

    
// ver
     for int  i  =   0  ; i  <  cn ; i  +=   5  )
    {
        painter
-> setFont( maxFont );
        QPointF pt( 
0  ,  i  *  cofs );

        pt 
=  scene -> viewportTransform().map( pt ); // 将坐标转换成scene的viewport坐标系中
        
// 小于0或大于当前窗口大小都不需要显示
         if ( pt.y()  <   0  )
            
continue ;

        
if ( pt.y()  >  sceneHeight )
            
break ;

        rect.setTop( pt.y() 
+   16.0f  );
        rect.setLeft( 
0  );
        rect.setWidth( 
12.0f  );
        rect.setHeight( 
12.0f  );
        painter
-> drawText( rect  , Qt::AlignCenter , tr( " %1 " ).arg(i) );
    }

 

 

转载于:https://www.cnblogs.com/olswcsr/archive/2010/08/05/1793583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值