您的位置:首页 > 编程语言 > Qt开发

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

2018-01-26 14:17 190 查看
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函数

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: