c/c++开发分享C/C++ Qt StringListModel 字符串列表映射组件详解

stringlistmodel 字符串列表映射组件,该组件用于处理字符串与列表框组件中数据的转换,通常该组件会配合listview组件一起使用,例如将listview组件与model模型绑定,当lis

stringlistmodel 字符串列表映射组件,该组件用于处理字符串与列表框组件中数据的转换,通常该组件会配合listview组件一起使用,例如将listview组件与model模型绑定,当listview组件内有数据更新时,我们就可以利用映射将数据模型中的数值以字符串格式提取出来,同理也可实现将字符串赋值到指定的listview组件内。

首先在ui界面中排版

C/C++ Qt StringListModel 字符串列表映射组件详解

默认的mainwindow::mainwindow构造函数中,我们首先初始化一个qstringlist字符串链表并对该链表赋值,通过new qstringlistmodel(this);创建一个数据模型,并通过ui->listview->setmodel(model);属性将模型与listview组件绑定,当listview组件被选中是则触发on_listview_clicked事件实现输出当前选中行,其初始化代码部分如下:

%ignore_pre_1%

代码运行效果:

C/C++ Qt StringListModel 字符串列表映射组件详解

添加代码:需要通过model->index()获取到最后一行的索引,然后使用model->setdata()追加写入数据到最后一条索引位置。
插入代码: 需要通过ui->listview->currentindex()获取到当前光标位置,并调用model->setdata()插入到指定位置。
删除代码: 直接调用model->removerows()等函数即可将指定位置删除。

  // 添加一行  void mainwindow::on_btnlistappend_clicked()  {      model->insertrow(model->rowcount());                       // 在尾部插入一行      qmodelindex index = model->index(model->rowcount()-1,0);   // 获取最后一行的索引      qstring linetext = ui->lineedit->text();      model->setdata(index,linetext,qt::displayrole);            // 设置显示文字      ui->listview->setcurrentindex(index);                      // 设置当前行选中      ui->lineedit->clear();  }    // 插入一行数据到listview  void mainwindow::on_btnlistinsert_clicked()  {      qmodelindex index;        index= ui->listview->currentindex();             // 获取当前选中行      model->insertrow(index.row());                   // 在当前行的前面插入一行      qstring linetext = ui->lineedit->text();      model->setdata(index,linetext,qt::displayrole);             // 设置显示文字      model->setdata(index,qt::alignright,qt::textalignmentrole); // 设置对其方式      ui->listview->setcurrentindex(index);                       // 设置当前选中行  }    // 删除当前选中行  void mainwindow::on_btnlistdelete_clicked()  {      qmodelindex index;      index = ui->listview->currentindex();    // 获取当前行的modelindex      model->removerow(index.row());           // 删除选中行  }    // 清除当前列表  void mainwindow::on_btnlistclear_clicked()  {     model->removerows(0,model->rowcount());  }

代码运行效果:

C/C++ Qt StringListModel 字符串列表映射组件详解

如果需要实现将listview数据模型中的数据导出到plaintextedit组件中,则需要通过model->stringlist()获取到listview中的每行并将其赋值到qstringlist字符串链表中,最后通过循环的方式依次插入到plaintextedit中即可,插入时默认会以逗号作为分隔符。

  // 显示数据模型文本到qplaintextedit  void mainwindow::on_btntextimport_clicked()  {      qstringlist plist;        plist = model->stringlist();    // 获取数据模型的stringlist      ui->plaintextedit->clear();     // 先清空文本框        // 循环追加数据      for(int x=0;x< plist.count();x++)      {          ui->plaintextedit->appendplaintext(plist.at(x) + qstring(","));      }  }

代码运行效果:

C/C++ Qt StringListModel 字符串列表映射组件详解

到此这篇关于c/c++ qt stringlistmodel 字符串列表映射组件的文章就介绍到这了,更多相关c++ qt stringlistmodel 字符串列表映射组件内容请搜索<猴子技术宅>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<猴子技术宅>!

需要了解更多c/c++开发分享C/C++ Qt StringListModel 字符串列表映射组件详解,都可以关注C/C++技术分享栏目—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/967177.html

发表评论

邮箱地址不会被公开。 必填项已用*标注