Qt WebKit---实战QWebView—3
来源:互联网 发布:网络打国际长途 编辑:程序博客网 时间:2024/05/22 08:09
本篇为QWebView应用的扩展,除了之前的QWebView相关知识,还涉及到QPainter及QPaintEvent的应用。本篇实现的效果为google map的夜视(night-mode)功能,如下图
实现night-mode的原理涉及到反色等知识,不过编写起来却十分简单。你可以尝试打开“画图”等图片编辑工具,然后选中反色,得到的效果即我们现在要完成的。
在QWebView的反色处理上,我们通过重写paintEvent函数实现:
1.首先调用QWebView的paintEvent方法将我们需要显示的图片(内容)paint好
2.QPaint提供了反色的接口setCompositionMode。它是一系列图像构成的接口,我们选择QPainter::CompositionMode_Difference实现整个画面的反色效果
3.设置好反色效果后,调用fillRect方法填充所需变化的区域。
完整的代码为(paintEvent,省略其他变量定义)
void webViewClass::paintEvent(QPaintEvent *event)
{
QWebView::paintEvent(event);
if(isNightMode)
{
QPainter p(this);
//p.setBackgroundMode(Qt::OpaqueMode);
p.setCompositionMode(QPainter::CompositionMode_Difference);
p.fillRect(event->rect(), Qt::white);
}
}
其中在fillRect中,因为CompositionMode_Difference模式指的是一种异或(xor)运算,因为white的颜色是全1,所以和原有图像的运算结果刚好是按位取反的功能,做到了反色效果。
- Qt WebKit---实战QWebView—3
- Qt WebKit学习笔记(5)---实战QWebView—3
- Qt WebKit学习笔记(3)---实战QWebView
- Qt WebKit---实战QWebView--1
- Qt WebKit---实战QWebView--2
- Qt WebKit学习笔记(3)---实战QWebView--1
- Qt WebKit学习笔记(3)---实战QWebView--1
- Qt WebKit学习笔记(4)---实战QWebView--2
- Qt WebKit学习笔记(4)---实战QWebView--2
- QT webkit 各个类之间关系--QWebView-QWebPage
- QT webkit 各个类之间关系--QWebView-QWebPag
- Qt下使用QWebview
- Qt 之 QWebView
- Qt学习 之 QWebView
- [Qt] QWebView的使用
- QT——QWebView、QWebPage和QWebFrame之间关系
- QT浏览器学习之一:QWebView
- Qt QWebView的使用例子
- javascript obj type (typeof extend)
- Android里Service的bindService()和startService()混合使用深入分析
- Qt WebKit---实战QWebView--2
- dyld: lazy symbol binding failed: Symbol not found: _OSAtomicIncrement32Barrier
- c#中Split 分离字符以及空格消除方法
- Qt WebKit---实战QWebView—3
- 第9周项目5-程序填充题(1)
- 通过浏览器获取用户地理位置
- javascript 算法笔记-小例
- R:工作空间
- iPhone6分辨率与适配
- Java 模拟单链表
- TCP长连接与短连接的区别
- 黑马程序员--OC--内存管理(一)