QT实践

  这两天工作搞了下QT,主要是为了实现一个功能,跨平台用的。功能是这样的,根据一个页面表单进行选择元素最后生成一个xml文件发送到手机上,因为之前实现了xmpp发送文件的作用,所以现在只需要根据文件生成一个xml文件。中途还算顺利,两天搞定!

   最终创建xml的代码就是这一段:

void hellodialog::create_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\"" );
    document.appendChild( document.createProcessingInstruction("xml", strHeader) );
    QDomElement root_elem = document.createElement("node");
    document.appendChild(root_elem);
 
    QDomElement child1 = document.createElement("component");
    child1.setAttribute("type","Visualable");
    root_elem.appendChild(child1);
 
    QDomElement child2 = document.createElement("component");
    child2.setAttribute("type","ProxyDeform");
    root_elem.appendChild(child2);
 
    QString mesh ="Model:";
    mesh += fileNameMesh;
    mesh += ":clone";
 
    QDomElement item1 = document.createElement("attribute");
    item1.setAttribute("name","Model");
    item1.setAttribute("value",mesh);
 
    child1.appendChild(item1);
 
    QDomElement item2 = document.createElement("attribute");
    item2.setAttribute("name","Is build Tangent");
    item2.setAttribute("value",isBuildTangent);
    child1.appendChild(item2);
 
    QString material = "name=";
    material += comboBoxDiff;
    material += ",specular=";
    material += lineEditR;
    material += " ";
    material += lineEditG;
    material += " ";
    material += lineEditB;
    material += " ";
    material += lineEditE;
    material += ",bumpiness=";
    material += bumpiness;
    material += ",cull=";
    material += comboBoxCull;
    material += ",Texture=";
    material += diffPicture;
 
    QDomElement item3 = document.createElement("attribute");
    item3.setAttribute("name","MaterialName");
    item3.setAttribute("value",material);
    child1.appendChild(item3);
 
    QDomElement item4 = document.createElement("attribute");
    item4.setAttribute("name","Z Modify");
    item4.setAttribute("value",modifyZ);
    child1.appendChild(item4);
 
    QString vertex;
    vertex += "VertexProxyTable:";
    vertex += fileNameProxy;
 
    QDomElement item5 = document.createElement("attribute");
    item5.setAttribute("name","VertexProxyTable");
    item5.setAttribute("value",vertex);
    child2.appendChild(item5);
 
    QString object3D;
    object3D += "Object3D:";
    object3D += fileNameObj;
    object3D += ":clone";
 
    QDomElement item6 = document.createElement("attribute");
    item6.setAttribute("name","Object3D");
    item6.setAttribute("value",object3D);
    child2.appendChild(item6);
    QTextStream out( &file );
    document.save( out, 4 );
    file.close();
}
如果有报一些.dll的错误的话,则需要使项目重新qmake一下,中途卡在这边一点时间。COFF的错误的话需要下载一个SP1,一般是不会碰到这种错误的,自己是因为安装VS2012后面卸载有点兼容问题吧。生成的xml格式类似下面这种:


在此记录下,自己也是第一次用QT做点东西,多掌握点东西对自己总是好的,加油!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值