XML语言数据读写理解11
有了前10节的基础,以及我在自己的博客里发布了那个简单的QT调试窗口类,一共两个,一个是有单例的,一个不是。大家想使用的话只需要加个头文件就可以调用了。
我们现在需要把存好的内容给显示出来,看看是不是正确读取了(虽然我觉得是正确的)。
我们再回到以前的Nodets类里,添加如下公共public代码:
double returnNormalizedIntensity() {
return NormalizedIntensity;
}
double returnOpacity() {
return Opacity;
}
inline QColor& returnEmission() {
return Emission;
}
毕竟以前的成员都是私有的,现在我们需要能访问它们的接口。接下来在tsfunItem中加入新的成员函数:
inline int returnNumOfNodes(void) {
return numOfNodes;
}
inline double returnDensityScale(void) {
return DensityScale;
}
inline double returnShadingType(void) {
return ShadingType;
}
inline double returnGradientFactor(void) {
return GradientFactor;
}
inline NodeTsList& returnTsNodes(void){
return TsNodes;
}
inline void setNameID(QString& nameid) {
NameID = nameid;
}
inline QString& returnNameID(void){
return NameID;
}
之后在tsfunGroup类里面添加并使用这个函数:
void TsfunGroup::showXML()
{
DebugWidget::getDebugWidget()->addContents("");
DebugWidget::getDebugWidget()->addContents("");
TsfunItem temptsfitmlist;
for (int i = 0;i<tsfitmlist.count();i++) {
temptsfitmlist = tsfitmlist[i];
DebugWidget::getDebugWidget()->addContents(temptsfitmlist.returnNameID());
DebugWidget::getDebugWidget()->addContents(QString::number(temptsfitmlist.returnDensityScale()));
DebugWidget::getDebugWidget()->addContents(QString::number(temptsfitmlist.returnGradientFactor()));
DebugWidget::getDebugWidget()->addContents(QString::number(temptsfitmlist.returnShadingType()));
NodeTsList ssTsNodes = temptsfitmlist.returnTsNodes();
for (int j = 0;j<ssTsNodes.count();j++) {
QString qsrg = QString::number(ssTsNodes[j].returnEmission().red()) +" "
+ QString::number(ssTsNodes[j].returnEmission().green()) + " "
+ QString::number(ssTsNodes[j].returnEmission().blue());
DebugWidget::getDebugWidget()->addContents(qsrg);
DebugWidget::getDebugWidget()->addContents(QString::number(ssTsNodes[j].returnNormalizedIntensity()));
DebugWidget::getDebugWidget()->addContents(QString::number(ssTsNodes[j].returnOpacity()));
}
}
}
注意里面的DebugWidget::getDebugWidget()->addContents();都是用来调试的语句。
这个程序其实很简单,就是从类里面去找子类,子类成员,然后显示出来数值而已。
显示效果如下:
normalMode
100
3
2
0 0 0
0
0
0 0 0
0.23597
0
0 0 0
0.288538
0.0179028
0 0 0
0.288578
0.563502
0 0 0
0.35417
1
0 0 0
1
1
maxMode
100
3
2
0 0 0
0
0
0 0 0
0.13597
0
0 0 0
0.188538
0.0279028
0 0 0
0.288578
0.363502
0 0 0
0.45417
1
0 0 0
1
1
所有数据都显示正常。
现在,我们已经能够把xml文件里面的数据读入到自己设计的结构中了,并且能够正确显示出来。下一节我们要想办法设计一个方法,把我们的结构给输出到xml格式的文件中。要注意我们是把结构里面的数据输出到xml文件,而不是说把读入的QDomdocument的结构给输出到xml文件里。