Qt开发中的实用笔记一--xml,Qpainter,Delegate:
因为开发环境不能联网,开发中用到有用的知识就记在word稳定中,不知不觉就记载了几十页,为避免笔记丢失,现在就一点点忘博客上搬,方便日后回顾!
------------------------------------------
一,xml文档的生成和解析
1,Dom方式:
xml首行说明类 QDomProcessingLnstruction类
元素对应QDomElement类
属性对应QDomAttr类
文本内容对应QDomText类
所有Dom节点,比如说明,元素,属性和文本,都使用QDomNode来表示
文档本身是QDomDocument类表示
2,手写xml例子:
QString filename = QFileDialog::getSaveFileName(this,"Save","","*.xml”);
QFile file(filename);
if(!file.open(QIODevice::WriteOnly | QIODevice::Text) {return;}
QDomDocument document;
QString strHeader("version=\"1.0"\ encoding=\"UTF-8\"");
QDomElement root_elem = document.createElement("item");
root_elem.setAttribute("id",1);
document.appendChild(root_elem);
QDomElement item1 = document.createElement("item1");
item1.setAttribute("item1",1);
QDomElement item2 = document.createElement("item2");
item2.setAttribute("item2",2);
root_elem.appendChild(item2);
QTextStream out(&file);
document.save(out,3);
file.close();
3,Qt中xml流的使用:读QXmlStreamWriter, 写QXmlStreamReader
二,QPainter和QPaintDevice类学习
1,QPainter可以在任何QPaintDevice的子类上面进行绘画,QWidget,QPixmap,QImage,QPicture等,但是没有QMainwidget
2,关于QPainter类中bounding()和paint()重写,设置绘制范围大小。paint()函数在绘制,重绘,窗口最大化最小化时都会调用
3,QPen类,QBrush类运用
4,QPixmap类,QBitmap类,QBitmap类集成自QPixmap,QDialog类是QMainWindow类和QWidget类的父类。
5,渐变相关类:QGradient
三个子类:QLinearGradient 直线渐变 QRadialGradient 辐射渐变 QConicalGradient 角度渐变
6,Qt provides four classes for hangding image data:QImage,QPixmap,QBitmap and QPicture. 四种绘图设备:QBitmap(位图,色深(0或1)为1)是继承自QPixmap, QPicture是以二进制保存图片
7,paintEvent(QPaintEvent*)函数会在多种情况下,被其他函数自动调用,比如:update(),repaint()等
8,QPainterPath类
9,自定义类继承自QGraphicsItem类时,要重写paint()和boundingRect()类
10,paintEvent()系统调用
三,Qt中的委托
1,QStyledItemDelegate和ItemDelegate都是继承自QAbstractItemDelegate,除了需要进行绘制的部分,这两个类的代码基本相同
2,QStyleItemDelegate 需要重写的函数:
createEditor()函数创建特定的编辑控件
setEditorData()函数编辑控件设定初始数据
setModeldata()函数在编辑完成后将数据写入Model
updateEditorGrometry()函数管理编辑控件的位置
Qt开发中的实用笔记一--xml,Qpainter,Delegate:的更多相关文章
- Qt开发中的实用笔记三--关于各种类的零碎知识点:
1,QUuid()创建唯一标识码,在创建数据库实体ID和链接数据库QSqlDatabase时非常方便 2,QScrollArea与QScrollBar,如果是要在widget中添加窗口滑动QScrol ...
- Qt开发中的实用笔记二--中文转码问题和string转换问题:
一,中文乱码转码问题 1,转码三句话:window下默认是GBK格式,linux下默认是UTF-8,看情况转换UTF-8/GBK QTextCodec::setCodecForTr(QTextCode ...
- Web 开发中很实用的10个效果【附源码下载】
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- 网站开发中很实用的 HTML5 & jQuery 插件
这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...
- Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构
分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...
- 【Qt开发】QThread 实用技巧、误区----但文档中没有提到
本文主要内容: 在任务一中,用 四 种方式实现:点击界面按钮,开线程运行一段程序,结果显示在一个Label上.1. 用不正确的方式得到看似正确的结果2. 用Qt Manual 和 例子中使用的方法3. ...
- 【FLEX教程】#008 开发中的问题笔记(慢更…)
在这里记录一下个人在FLEX开发中遇到的一些问题.方便一些遇到同样问题的朋友们,能够快速的解决这些问题. 这篇笔记我会慢慢的更新,(PS:有遇到问题就往上面更….) 2015年1月4日 12:53:5 ...
- 实际开发中,实用的辅助iOS开发的工具
就目前所知,开发iOS绝大部分都是用Xcode,除此工具之外,还有几个好用的可以辅助实际开发中遇到的问题,拥有这种辅助开发技能,在工作中,甚至是以后的面试中,都可能会有不小的帮助. 下面推荐三个实用的 ...
- Web 开发中很实用的10个效果
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
随机推荐
- Spring @Scheduled应用解析
最近,遇到的一个需求,需要执行定时任务,每个一定时间需要执行某个方法 因为项目是SpringMVC的项目,所以使用的是Spring @Scheduled(由于quartz应用起来太麻烦,所以没有采用) ...
- ajax绑定
function Select() { var data = $("#SelectByTime").serialize(); $.post( "settle.aspx?a ...
- C++引用的作用和用法
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. 引用的声明方法:类型标识符&引用名=目标变量名: 例如: int q; int &ra=a; 说明: &am ...
- 【笔记】Service的使用
一.创建Service 1.创建一个myService类,来继承Service.重写其中的方法,包括:onCreate(),onStartCommend(),onDestroy(),onBind()方 ...
- (spring-第21回【MVC基础篇】)SpringMVC一点就通
概述 Spring MVC通过一套MVC注解,让POJO变成处理请求的控制器,无需实现任何接口,同时,SpringMVC还支持REST风格的URL请求:注解驱动和REST风格的Spring MVC是S ...
- C++ mem_fun 和 mem_fun_ref 的用法
假设我们有以下的一个类: 另外有一个包含 class A 对象的数组: vector<A> vec; 如何对每一个类的对象调用成员函数print. 做法1: 利用下标 for(int i= ...
- jsRender绑定数据
首先,引入jquery(很重要),其次引入jsRender.js <script type="text/javascript" src="js/jquery-1.7 ...
- iOS 创建framework & bundle 主要配置
bundle:base sdk 为iOS, delete compile resource framework:target dependencies,headers,mach-o proj: tar ...
- C# BackgroundWorker的使用
文章摘自:http://www.cnblogs.com/tom-tong/archive/2012/02/22/2363965.html BackgroundWorker 可以用于启动后台线程. 主要 ...
- android view : 绘制
说到绘制,其实就是如何把一个view的对象,变成手机上可视的图形.很多人总结3个过程:测量,布局,绘制.这也是所有的要显示图形的程序所应该抽象的3个步骤,测量就是测量出你view的大小,布局就是要显示 ...