首页 > 作文

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

更新时间:2023-04-04 00:55:02 阅读: 评论:0

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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图