qt编程例子4.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
qt编程例子4

Qt编程例子 ----绘图、多线程、网络编程 实验八 Qt 中的绘图 QFrame 类是有框架的窗口部件的基类。 它绘制框架并且调用一个虚函数drawContents()来填充这个框架。 QFrame 类也能够直接被用来创建没有任何内容的简单框架, frame = new QFrame( this, frame ); frame-setBackgroundColor( black ); frame-setGeometry( QRect( 40, 40, 402, 252 ) ); repaint 函数 void?QWidget::repaint ( int?x, int?y, int?w, int?h, bool?erase = TRUE )?[槽] 通过立即调用paintEvent()来直接重新绘制窗口部件,除非更新是失效的或者窗口部件被隐藏。如果erase为真,Qt在paintEvent()调用之前擦除区域(x,y,w,h)。 当某个窗口或者部件接收到了“重画”的消息时,它便使用paintEvent()函数画图,而 我们画图的基本方法就是重载QWidget 的虚方法paintEvent()。当然,这个只能针对QWidget 的派生类。 erase 函数 void?QWidget::erase ( int?x, int?y, int?w, int?h ) 在窗口部件中擦除指定区域(x, y, w, h),并不产生绘制事件。 QPainter 类 QPainter可以绘制从简单的直线到像饼图和弦这样的复杂形状。它也可以绘制排列的文本和像素映射。通常,它在一个“自然的”坐标系统中绘制 。 绝大多数情况下,所有这些是在一个绘制事件中完成的。 void SimpleExampleWidget::paintEvent() { QPainter paint( this ); paint.setPen( Qt::blue ); paint.drawText( rect(), AlignCenter, “The Text” );//在矩形中绘制文本 } 使用方法很简单并且这里有你可以使用的许多设置: font()是当前设置的字体 brush()是当前设置的画刷,用来填充例如圆的颜色或者调色板。 pen()是当前设置的画笔,用来画线或者边缘的颜色或者点画。 pos()是当前位置,通过moveTo()设置并且通过lineTo()使用。 QPainter 的核心功能是绘制,并且这里有最简单的绘制函数: ?? drawPoint():绘制单一的一个点 ?? drawPoints():绘制一组点 ?? drawLine():绘制一条直线 ?? drawRect():绘制一个矩形 ?? drawWinFocusRect():绘制一个窗口焦点矩形 ?? drawRoundRect():绘制一个原形矩形 ?? drawEllipse():绘制一个椭圆 ?? drawArc():绘制一个弧 ?? drawPie():绘制一个饼图 ?? drawChord():绘制一条弦 ?? drawLineSegments():绘制n 条分隔线 ?? drawPolyline():绘制由n 个点组成的多边形 ?? drawPolygon():绘制由n 个点组成的多边形 ?? drawConvexPolygon():绘制由n 个点组成的凸多边形 ?? drawCubicBezier():绘制三次贝塞尔曲线 本例中的绘制代码 QPoint beginPoint; QPoint endPoint; //定义了两个点,分别代表着画图的起始点和结束点。 painter.setPen( blue ); //设置画笔的颜色为blue。 for( int i=0; i199; i++ ) { beginPoint.setX( 2*i ); //乘2是为了”拉长”曲线. beginPoint.setY( buffer[i] +125 ); endPoint.setX( 2*i+1 ); endPoint.setY( buffer[i+1] +125 ); painter.drawLine( beginPoint, endPoint ); } QTimer类 QTimer 类是Qt 中关于定时器的一个类,它提供了定时器信号和单触发定时器。 它在内部使用定时器事件来提供更通用的定时器(关于定时器事件,请参照: QTimerEvent)。QTimer很容易使用:创建一个QTimer,使用start()来开始并且把它的timeout(

文档评论(0)

mv2323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档