QT获取控件的内容去传参的小发现

1://处理文本框(内容是一个连续的字符串)的方法(不能直接用文本框的内容去传参,
//否则会有意想不到的错误发生,需要利用先拷贝到数组,然后利用数组去传参),


#include <QStringList>
#include <QString>
 int argc  = 0;
 
     int i = 0;
   
   char *argv[10]={NULL};
   
   QString str;
   
    QStringList strList;
   
  char argv_buf[1024]={0};
   
  int buf_len = 0;    

 str = ui->can_file->text();  //获取单行输入框的内容
        strList= str.split(" ",QString::SkipEmptyParts);将单行输入框的内容按空格进行切割,并且去除多余空格,返回值是字符串列表
        str = strList[0];
        strncpy(&argv_buf[buf_len],str.toStdString().c_str(),strlen(str.toStdString().c_str())); //将str转化为C标准字符串,并且拷贝给数组,
        argv[1]=&argv_buf[buf_len];  //让指针去指向这个数组
        buf_len += strlen(str.toStdString().c_str());
        argv_buf[buf_len] = '\0';
        buf_len+=1;

。。。。。。

argv[argc] = NULL;

canconfig_main(argc, argv,ui); //传参调用canconfig_main函数

//处理文本框(内容是不连续的字符串)的方法(不能直接用文本框的内容去传参,
//否则会有意想不到的错误发生,需要利用先拷贝到数组,然后利用数组去传参), 


    bzero(argv_buf,1024);
        str = ui->can_con_cmd->text();
        strList= str.split(" ",QString::SkipEmptyParts);
        argc = strList.count();


        for(i = 0;i<argc;i++)
        {
            str = strList[i];
            strncpy(&argv_buf[buf_len],str.toStdString().c_str(),strlen(str.toStdString().c_str()));
            argv[i]=&argv_buf[buf_len];
            buf_len += strlen(str.toStdString().c_str());
            argv_buf[buf_len] = '\0';
            buf_len+=1;
        }
        argv[argc] = NULL;

 canconfig_main(argc, argv,ui); //传参调用canconfig_main函数

    }




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值