QT画图培训教程文件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
QT画图培训教程文件

例如,下面定义了两个对象:标签对象 label 和滚动条对象 scroll,并将 valueChanged() 信号与标签对象的 setNum() 相关联,另外信号还携带了一个整形参数,这样标签总是显示滚动条所处位置的值。 QLabel *label = new QLabel; QScrollBar *scroll = new QScrollBar; QObject::connect( scroll, SIGNAL(valueChanged(int)), label, SLOT(setNum(int)) ); 元对象工具 元对象编译器 moc(meta object compiler)对 C++ 文件中的类声明进行分析并产生用于初始化元对象的 C++ 代码,元对象包含全部信号和槽的名字以及指向这些函数的指针。 moc 读 C++ 源文件,如果发现有 Q_OBJECT 宏声明的类,它就会生成另外一个 C++ 源文件,这个新生成的文件中包含有该类的元对象代码。例如,假设我们有一个头文件 mysignal.h,在这个文件中包含有信号或槽的声明,那么在编译之前 moc 工具就会根据该文件自动生成一个名为 mysignal.moc.h 的 C++ 源文件并将其提交给编译器。 元对象代码是 signal/slot 机制所必须的。用 moc 产生的 C++ 源文件必须与类实现一起进行编译和连接,或者用 #include 语句将其包含到类的源文件中。moc 并不扩展 #include 或者 #define 宏定义 , 它只是简单的跳过所遇到的任何预处理指令。 实验 自定义一个窗口,添加按钮,按下按钮之后,窗口自动关闭 具体实现 清空链表,释放内存 while(node!=NULL){ pre = pre-last; free(node); node = pre; } for(int i=0;i16;i++) for(int j=0;j16;j++) WorB[i][j] = 2; update(); 判断输赢 每次在添加数据链表的时候会更新一个二位数组,该数组记录了每个棋子的颜色,数组的二位数字分别代表了坐标点,这个坐标点可以转换成像素点。通过坐标点可以简单的判断是否有5个颜色相同的棋子连在一起。(以竖直方向为例) 代码分析 int color = node-color; int a = node-x; int b = node-y; int count; int c1; c1 = 0; count = 1; while(b-count=1){ if(WorB[a][b-count]==color) count++; else break; }//计算棋子上方相同颜色的个数 c1 = count; count = 1; while(b+count=15){ if(WorB[a][b+count]==color) count++; else break; }//计算棋子下方相同颜色的个数 c1 = c1 + count;//计算相邻的同色棋子的个数,由于再向上计算和向下计算的时候分别都将当前棋子算在内了(计算了两次),所以最后比较的时候要判断c1是否大于等于6 大实验 最终效果图 附录--QPainterPath 用途:?它是由一些图形如曲线、矩形、椭圆组成的对象。主要的用途是,能保存已经绘制好的图形。实现图形元素的构造和复用;图形状只需创建一次,然后调用QPainter::drawPath()?函数多次绘制。painterpath?可以加入闭合或不闭合的图形(?如:矩形、椭圆和曲线)?。QPainterPath?可用于填充,描边,clipping(修剪)。 QPainterPath(续) 使用方法:?QPainterPath?一旦创建,直线和曲线都可以被添加入path?,通过lineTo(),arcTo(),cubicTo()?和?quadTo()?函数。currentPosition()?是最后一次绘制后的“结束点”(或初始点)。使用moveTo()?移动currentPosition()?而不会添加任何元素。moveTo()?隐含的开始一个新subpath?,并且闭合前一个。 一个path?添加到另一个path?用connectPath()。它默认是从原点(0?,0?)开始绘图,可以使用moveTo?()改变绘图的开始位置。 小实验 void Dialog::paintEvent(QPaintEvent *) { QPainterPath path; path.addEllipse(100,200,50,50);?//?向path?中添加图

文档评论(0)

taotao0b + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档