qt 混合 绘图_Qt绘图详解课件.ppt

表盘 画表盘的指针 * 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_cast(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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值