嵌入式接口原理与编程.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
表盘 画表盘的指针 * void CircularGauge::paintEvent(QPaintEvent *ev) { ... p.rotate(m_value+135); QPolygon polygon; polygon QPoint(-extent*0.05, extent*0.05) QPoint(-extent*0.05, -extent*0.05) QPoint(extent*0.46, 0); p.setPen(Qt::NoPen); p.setBrush(QColor(255,0,0,120)); p.drawPolygon(polygon); } 加速绘制 paintEvent函数有一个QPaintEvent参数 QPaintEvent有两个方法 QRect rect():返回需要重绘的矩形 QRegion region():返回需要重绘的区域 重绘时,尽量避免在QPaintEvent返回的矩形/区域外绘制复杂图形 * 为表盘添加事件过滤器 按键0时,时油表指向0 * class KeyboardFilter : public QObject ... {bool KeyboardFilter::eventFilter(QObject *o, QEvent *ev) if (ev-type() == QEvent::KeyPress) if (QKeyEvent *ke = static_castQKeyEvent*(ev)) if (ke-key() == Qt::Key_0) if (o-metaObject()-indexOfProperty(value) != -1 ) { o-setProperty(value, 0); return true; } return false; } 返回true,停止 对该事件的响应 安装事件过滤器 调用installEventFilter函数 由于该filter对象是应用于属性(property)的,它可以用于任何具有该属性的对象,如QSlider, QDial, QSpinBox等 如果勇于尝试,可以为QApplication添加事件过滤器 * ComposedGauge compg; CircularGauge circg; KeyboardFilter filter; compg.installEventFilter(filter); circg.installEventFilter(filter); 课堂小结 * 思考题 * 作业题(工程打包上传至课间区) 时钟设计(表盘、指针) 可选方法: 全部用绘图函数; 贴图; * 预习内容 第5章 QT5主窗体 * 渐变填充 Qt提供了渐变填充的画刷,渐变填充包括两个要素:颜色的变化和路径的变化。 颜色变化可以指定从一种颜色渐变到另外一种颜色。 路径变化指在路径上指定一些点的颜色进行分段渐变。 Qt中,提供了三种渐变填充 线性(QLinearGradient) 圆形(QRadialGradient) 圆锥渐变(QConicalGradient) 所有的类都从QGradient类继承 构造渐变填充的画刷 QBrush b = QBrush( QRadialGradient( ... ) ); * 填充设置 从图形的起点到终点,以从0至1的比例渐变填充 完成0-1范围的填充后,后续颜色铺开的方式可以不同,通过setSpread() 函数来设置 * QGradient::setColorAt( qreal pos, QColor ); QGradient::PadSpread (default) QGradient::RepeatSpread QGradient::ReflectSpread 线性渐变填充 线性渐变填充指定两个控制点,画刷在两个控制点之间进行颜色插值。 通过创建QLinearGradient对象来设置画刷。 QPainter p(this); QLinearGradient g(0, 0, 100, 100); g.setColorAt(0.0, Qt::white); g.setColorAt(1.0, Qt::blue); p.setBrush(g); p.drawRect(0, 0, 10

文档评论(0)

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

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

1亿VIP精品文档

相关文档