stringlistmodel 字符串列表映射组件,该组件用于处理字符串与列表框组件中数据的转换,通常该组件会配合listview组件一起使用,例如将listview组件与model模型绑定,当listview组件内有数据更新时,我们就可以利用映射将数据模型中的数值以字符串格式提取出来,同理也可实现将字符串赋值到指定的listview组件内。
首先在ui界面中排版
默认的mainwindow::mainwindow
构造函数中,我们首先初始化一个qstringlist
字符串链表并对该链表赋值,通过new qstringlistmodel(this);
创建一个数据模型,并通过ui->listview->tmodel(model);
属性将模型与listview组件绑定,当listview组件被选中是则触发on_listview_clicked
事件实现输出当前选中行,其初始化代码部分如下:
#inc介词加whichlude "mainwindow.h"#include "ui_mainwindow.h"#include <qstringlist>#include <qstringlistmodel>mainwindow::mainwindow(qwidget *parent): qmainwindow(parent), ui(new ui::mainwindow){ ui->tupui(this); // 初始化一个stringlist字符串列表 qstringlist thestringlist; thestringlist << "北京" << "上海" << "广州"; // 创建并使用数据模型 生石灰和水 model = new qstringlistmodel(this); // 创建模型 model->tstringlist(thestringlist); // 导入模型数据 ui->listview->tmodel(model); // 为listview设置模型 ui->listview->tedittriggers(qabstractitemview::doubleclicked | qabstractitemview::lectedclicked);}mainwindow::~mainwindow(){ delete ui;}// 当listview列表项被选中时,显示qmodelindex的行、列号void mainwindow::on_listview_clicked(const qmodelindex &index){ ui->labinfo->ttext(qstring::asprintf("当前项:row=%d, column=%d", index.row(),index.column()));}
代码运行效果:
添加代码:需要通过model->index()
获取到最后一行的索引,然后使用model->tdata()
追加写入数据到最后一条索引位置。
插入代码: 需要通过ui->listview->currentindex()
获取到当前光标位置,苏教版五年级上册语文教案并调用model->tdata()
插入到指定位置。
删除代码: 直接调用model->removerows()
等函数即可将指定位置删除。
// 添加一行void mainwindow::on_btnlistappend_clicked(){ model->inrtrow(model->rowcount()); // 在尾部插入一行 qmodelindex index = model->index(model->rowcount()-1,0); // 获取最后一行的索引 qstring linetext = ui->lineedit->text(); model->tdata(index,linetext,qt::displayrole); // 设置显示文字 ui->listview->tcurrentindex(index); // 设置当前行选中 ui->lineedit->clear();}// 插入一行数据到listviewvoid mainwindow::on_btnlistinrt_clicked(){ qmodelindex index; index= ui->listview->currentindex(); // 获取当前选中行 model->inrtrow(index.row()); // 在当前行的前面插入一行 qstring linetext = ui->lineedit->text(); model->tdata(index,linetext,qt::displayrole); // 设置显如何提高写作能力示文字 model->tdata(index,qt::alignright,qt::textalignmentrole); // 设置对其方式 ui->listview->tcurrentindex(index); // 设置当前选中行}// 删除当前选中行void mainwindo通化师范学院w::on_btnlistdelete_clicked(){ qmodelindex index; index = ui->listview->currentindex(); // 获取当前行的modelindex model->removerow(index.row()); // 删除选中行}// 清除当前列表void mainwindow::on_btnlistclear_clicked(){ model->removerows(0,model->rowcount());}
代码运行效果:
如果需要实现将listview
数据模型中的数据导出到plaintextedit
组件中,则需要通过model->stringlist()
获取到listview中的每行并将其赋值到qstringlist
字符串链表中,最后通过循环的方式依次插入到plaintextedit
中即可,插入时默认会以逗号作为分隔符。
// 显示数据模型文本到qplaintexteditvoid 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++ qt stringlistmodel 字符串列表映射组件内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 00:55:01,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1896c79280e010c93b2486caaaed69de.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C/C++ Qt StringListModel 字符串列表映射组件详解.doc
本文 PDF 下载地址:C/C++ Qt StringListModel 字符串列表映射组件详解.pdf
留言与评论(共有 0 条评论) |