因为开发环境不能联网,开发中用到有用的知识就记在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()函数管理编辑控件的位置