QT 按照预想格式导出内容

博客讲述了在编程中遇到大量重复工作的情况,作者通过QT编写代码实现内容的自动导出,确保了格式的准确性和减少了错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     在编写代码时,发现需要做一堆重复性的工作,量大且容易犯错,于是通过代码的形式输出。

需要导出的内容如下:






代码如下:


void CModbusInputConfig::on_paraBtn_clicked()
{
    QString filePath = QFileDialog::getSaveFileName(this,tr("保存参数文件"),"./Config/para.ini","para(*.ini)");
    if(filePath.isEmpty())
        return;

    QFile file(filePath);
    if(!file.open(QIODevice::WriteOnly))
    {
        return;
    }

    QTextStream out(&file);

    static int iCout = 0;


    out <<"//send order"<<endl;

    for(int i =0;i< m_pData->bufferList.size();i++)
    {
     DIYModbus_Struct::Buffer_Struct bufferStru = m_pData->bufferList.at(i);

       QString strFun = QString::number(bufferStru.fun);
       strFun = "0x"+QString("%1").arg(bufferStru.fun,2,16,QChar('0').toUpper());
       QString strStart = QString::number(bufferStru.iStart);
       strStart = "0x"+QString("%1").arg(bufferStru.iStart,4,16,QChar('0').toUpper());
       QString strLen = QString::number(bufferStru.len);
       strLen = "0x"+QString("%1").arg(bufferStru.len,4,16,QChar('0').toUpper());

       out << "m_buffer["<<i<<"].fun = "<<strFun<<";"<<endl;
       out << "m_buffer["<<i<<"].iStart = "<<strStart<<";"<<endl;
       out << "m_buffer["<<i<<"].len = "<<strLen<<";"<<endl;
       out<<""<<endl;
     }

    out<<"//YC"<<endl;
    int iYCSize = m_pData->YCList.size();
    for(int i =0;i < iYCSize;i++)
    {

       DIYModbus_Struct::YC_Struct YCStr = g_data.YCList.at(i);
       QString type;
       if(YCStr.type == 1)
       {
            type = "TYPE_SHORT";
            iCout++;
       }
       else
       {
            type = "TYPE_LONG";
       }
         out << "m_YCStruct["<<i<<"].iBuffer = " << (YCStr.iBuffer)<<";"<<endl;
         out << "m_YCStruct["<<i<<"].type = "<<type<<";"<<endl;
         out << "m_YCStruct["<<i<<"].index1 = "<<YCStr.index1<<";"<<endl;
         out << "m_YCStruct["<<i<<"].index2 = "<<YCStr.index2<<";"<<endl;
         out << "m_YCStruct["<<i<<"].index3 = "<<YCStr.index3<<";"<<endl;
         out << "m_YCStruct["<<i<<"].index4 = "<<YCStr.index4<<";"<<endl;
         out<<""<<endl;
    }

    out<<"//YX "<<endl;

//    m_YXStruct[0].iBuffer = 0;
//    m_YXStruct[0].iByte = 14;
//    m_YXStruct[0].iBit = 1;


    int YXSize = m_pData->YXList.size();

    for(int i=0;i<YXSize;i++)
    {
        DIYModbus_Struct::YX_Struct YXStr = g_data.YXList.at(i);
        out << "m_YXStruct["<<i<<"].iBuffer = " << YXStr.iBuffer << ";" << endl;
        out << "m_YXStruct["<<i<<"].iByte = " << YXStr.iByte <<";" << endl;
        out << "m_YXStruct["<<i<<"].iBit = " << YXStr.iByteBit <<";" << endl;
        out << endl;

    }
    int YXYXSize = m_pData->YCYXList.size();

//    m_YXYCStruct[0].iYC =3;
//    m_YXYCStruct[0].type =1;
//    m_YXYCStruct[0].value =2;

    out << "//YXYC"<<endl;

    for(int i=0;i<YXYXSize;i++)
    {
        DIYModbus_Struct::YCYX_Struct YCYXStr = g_data.YCYXList.at(i);

        out << "m_YXYCStruct["<<i<<"].iYC = " << (YCYXStr.iYC+1) <<";" << endl;
        out << "m_YXYCStruct["<<i<<"].type = " << YCYXStr.type << ";" << endl;
        out << "m_YXYCStruct["<<i<<"].value = " << YCYXStr.value << ";"<< endl;
        out << endl;

    }

    out<<"BUFFER_NUM = " << m_pData->bufferList.size() << endl;
    out<<"YC2_NUM = " << iCout << endl;
    out<<"YC4_NUM = " << m_pData->YCList.size()-iCout << endl;
    out<<"YX_NUM = " << m_pData->YXList.size() << endl;
    out<<"YXYC_NUM = " << m_pData->YCYXList.size() << endl;

    int MAXSize = ( m_pData->YXList.size()+m_pData->YCYXList.size())/8 +iCout*4+
             (m_pData->YCList.size()-iCout)*2+20;
    out << "MAXsize = " << MAXSize << endl;

    iCout = 0;


}


验证内容如下:




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值