范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

从零开始学Qt(37)QStringListModel的使用

  QStringListModel是用于处理字符串列表的数据模型,它可以作为QListView的数据模型,在界面上显示和编辑字符串列表。
  QStringListModel的setStringList()函数可以初始化数据模型的字符串列表的内容,stringList() 函数返回数据模型内的字符串列表,在关联的ListView组件里编辑数据后,数据都会及时更 新到数据模型内的字符串列表里。
  QStringListModel提供编辑和修改字符串列表数据的函数,如insertRows()、removeRows()、 setData()等,这些操作直接影响数据模型内部的字符串列表,并且修改后的数据会自动在关联的ListView组件里刷新显示。
  示例釆用QStringListModel作为数据模型,QListView作为视图组件,演示了QStringListModel 和QListView构成Model/View结构编辑字符串列表的功能,程序运行时界面如图所示。
  QStringListModel的使用Model/View结构对象和组件初始化
  示例的窗口是从QWidget继承而来的类Widget,界面采用可视化设计。在Widget类中定义一个QStringListModel类的变量:QStringListModel *theModel;
  在Widget类的构造函数中进行变量的创建,完成数据模型与界面视图组件的关联,下面是Widget类构造函数的代码:Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {   ui->setupUi(this);   QStringList theStrList;   theStrList<<"北京"<<"上海"<<"天津"<<"河北"<<"山东"<<"四川"<<"重庆";   theModel=new QStringListModel(this);   theModel->setStringList(theStrList); //导入theStrList的内容   ui->listView->setModel(theModel); //设置数据模型   ui->listView->setEditTriggers(QAbstractItemView::DoubleClicked |                                  QAbstractItemView::SelectedClicked); }
  QStringListModel的setStringList()函数将一个字符串列表的内容作为数据模型的初始数据内容。
  QListView的setModel()函数为界面视图组件设置一个数据模型。
  程序运行后,界面上ListView组件里就会显示初始化的字符串列表的内容。编辑项
  QListView::setEditTriggers()函数设置QListView的条目是否可以编辑,以及如何进入编辑状态,函数的参数是QAbstractItemView::EditTrigger枚举类型值的组合。构造函数中设置为:ui->listView->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::SelectedClicked);
  表示在双击,或选择并单击列表项后,就进入编辑状态。
  若要设置为不可编辑,则可以设置为:ui->listView->setEditTriggers(QAbstractltemView::NoEditTriggers);添加项
  添加项是要在列表的最后添加一行,界面上"添加项"按钮的槽函数代码如下:void Widget::on_btnListAppend_clicked() { //添加一行   theModel->insertRow(theModel->rowCount()); //在尾部插入一空行   QModelIndex index=theModel->index(theModel->rowCount()-1, 0);   theModel->setData(index, "new item", Qt::DisplayRole);   ui->listView->setCurrentIndex(index); //设置当前选中的行 }
  对数据的操作都是针对数据模型的,所以,插入一行使用的是QStringListModel的insertRow (int row)函数,其中row是一个行号,表示在row行之前插入一行。要在列表的最后插入一行,参数row设置为列表当前的行数即可。
  这样只是在列表尾部添加一个空行,没有任何文字。为了给添加的项设置一个缺省的文字标 题,首先要获得新增项的模型索引,即:QModelIndex index=theModel->index(theModel->rowCount()-1, 0);
  QStringListModel的index()函数根据传递的行号、列号、父项的模型索引生成一个模型索引, 这行代码为新增的最后一个项生成一个模型索引index。
  为新增的项设置一个文字标题"new item",使用setData()函数,并用到前面生成的模型索引index。代码如下:theModel->setData(index,"new item",Qt::DisplayRole);
  在使用setData()函数时,必须指定设置数据的角色,这里的角色是Qt::DispiayRole,它是用 于显示的角色,即项的文字标题。插入项
  "插入项"按钮的功能是在列表的当前行前面插入一行,其实现代码如下:void Widget: :on_btnListInsert_clicked {//插入一行   QModelIndex index=ui->listView->currentIndex();   theModel->insertRow(index.row());   theModel->setData(index,"inserted item",Qt::DisplayRole);   ui->listView->setCurrentIndex(index); }
  QListView::currentIndex()获得当前项的模型索引index, index.row()则返回这个模型索引的行号。删除当前项
  使用QStringListModel的removeRow()函数删除某一行的代码如下:void Widget::on_btnListDelete_clicked() {//删除当前行 ^   QModelIndex index=ui->listView->currentIndex();   theModel->removeRow(index.row()); }删除列表
  删除列表的所有项可使用QStringListModel的removeRows(int row,int count)函数,它表示从行号row开始删除count行。代码如下:void Widget::on_btnListClear_clicked() {//淸除所有项   theModel->removeRows (0, theModel->rowCount()); }
  在这个示例中,通过QStringListModel和QListView说明了数据模型与视图组件之间构成 Model/View结构的基本原理。

血氧仪遭疯抢,手机小程序能秒测,靠谱吗?近期,不少消费者在买不到血氧检测仪的情况下,开始尝试使用手机应用程序进行血氧测试,但其精确度等问题却引起了网络热议。28日就有网友发帖称,其用红色塑料盖在一款小程序上测血氧,结果显马斯克危险了特斯拉股价开始反弹了,但反弹到什么力度,现在还不好说。这一年空头对马斯克几乎是用上了全部弹药,不分出胜负誓不罢休。一年时间,特斯拉市值缩水近70,如果只看12月份,本月最低点相对本市值一夜蒸发4431亿!苹果为什么会大跌这么多?截至美股28号收盘,苹果跌幅3。07,市值一夜蒸发4431亿人民币,市值2。01万亿美元,险守2万亿美元大关。回顾今年苹果股价,在2022年第一个交易日,苹果市值创出新高,一度突破高质量绿色发展的安吉成果中国小康网讯12月30日,由小康杂志社主办的2022第二届中国经济社会高质量发展论坛在线上举行。本届论坛以中国式现代化与高质量发展为主题,邀请了来自全国各地的政府主政者专家学者及行肥城市仪阳街道砥砺奋进结硕果2022年以来,肥城市仪阳街道在市委市政府的坚强领导下,抢抓机遇拼搏实干,强优势补短板固底板,各项工作成效显著。优异成绩的取得,既是市委市政府正确领导,全市各级各部门关心支持的结果国内首个量子人工智能计算中心在无锡滨湖揭牌1月1日,在无锡市滨湖区召开的2023太湖湾科创带滨湖创新大会上,滨湖区委副书记副区长高扬上海交通大学无锡光子芯片研究院院长金贤敏共同为国内首个量子人工智能计算中心太湖量子智算中心新华社年度卫星影像2022,迈向新征程的中国2022年2月14日,正在举行2022年北京冬奥会自由式滑雪及单板滑雪的张家口云顶滑雪公园。北京冬奥会是新冠疫情大流行以来首次如期举办的全球综合性体育盛会,共有91个国家和地区近3人民币大幅走强节后有望迎来开门红一周期市一一周市场回顾国际市场节前美三大股指弱势反弹,标普和纳指结束连续五周震荡调整,技术上短期中期依然震荡偏空。节前美元指数继续破位收低,预计短期美元指数延续弱势,中期维持弱势震荡。节前成都伊藤洋华堂春熙店正式闭店出品联商网撰文多米2022年12月31日,陪伴成都消费者25年之久的伊藤洋华堂春熙店正式落幕。在进入2022年12月份以来,成都伊藤洋华堂春熙店举办了成都记忆影像展等多项活动,回馈2023年度前瞻全球经济复苏多艰,中国将带来新发展机遇来源中国新闻网新冠疫情乌克兰危机通胀高企能源价格暴涨供应链紊乱2023年,全球经济复苏之路,挑战重重。作为世界经济增长最大引擎,中国新一年将如何发挥自身作用,为持续推动全球经济向好怎么可以在汗蒸时做这些事!冬季汗蒸请注意随着天气越来越冷,大家的休闲方式都发生了变化,不想动,懒得动,就想找一个暖和的地方躺一天。汗蒸房就成为了很多朋友的第一选择,穿得少,还暖和,有吃有喝,排毒养颜。真想天天都待在汗蒸房
郑明明化妆品怎么样?郑明明鞘肤敏舒缓修护系列使用感冬天一到,很多小姐姐的脸上都会感觉特别的干燥,有些还会感觉到痒,这是换季的表现,所以我们应该选择带有补水功效又带有修护功效的护肤品,而郑明明鞘肤敏舒缓修护系列就是一个不错的选择。郑元宵佳节游夫子庙,烟火气又起来了,随手拍在古城南京,初十五有吃元宵赏花灯的习俗。因为天气预报说十五可能下雨,所以我提前一天行动了。根据夫子庙的预告,从初十三(2月3号)一直到2月底都有灯展,呼吁大家错峰出行。这也算是放开武汉谭鑫培公园里等待一场好戏上演新华社武汉2月5日电(记者熊翔鹤龚联康)2月3日下午,湖北武汉阳光明媚,在位于江夏区的谭鑫培公园里,游客熙熙攘攘。朝着人群聚集的方向,记者看到了公园正中央的建筑谭鑫培戏楼。红柱黛瓦去泰国旅游,美女递的仙女果为何不能接?导游接了会吃亏现在人们的生活好了,越来越多的人都加入到了旅游的大潮中来。(此处已添加小程序,请到今日头条客户端查看)对于我们中国游客来讲,大家不仅希望在国内旅游,更希望能出国去走一走看一看,一来现实中的京海市,藏不住了!富于浓浓广府风味的街景挂满斑驳岁月痕迹的建筑充满烟火气的小馆热播剧狂飙带火了京海市不少网友询问京海市究竟在哪里?狂飙中的江门街景京海市的主要取景地在广东江门它位于广东省中南部历史悠船到孟加拉国,船员体验当地人的生活,真实经历有挑战性,要小心经常去一些富裕的国家,突然让我去穷国家,感觉自己去了地狱一样。航海十几年,去了九十多个国家,孟加拉国给我的印象就如印度一般。不过,要比印度更好的地方,就是这个国家的百姓,他们对待中以太坊2。0生态网络SNARK重磅上线,正式开放注册据官方消息由美国BlueZilla孵化器与以太坊前期创始团队联合开发,世界各国多位crypto精英联合代码极客组织共同维护,以Web3。0核心技术为底层架构,结合DeFi金融与以太中国公民赴20国出境团队游重启新加坡旅游业界期待中国游客到来来源光明网6日,中国公民赴20个国家的出境团队旅游重启。在首批20个目的地国家名单中,包括了新加坡。总台记者了解到,新加坡旅游业界积极准备,期待中国游客的到来。新加坡是一个城市国家深港陆路口岸全面恢复正常通关文羊城晚报全媒体记者李天军宋王群郑明达李晓旭郭起李艺戈王俊图羊城晚报全媒体记者王磊2月6日7时03分,旅客蔡先生背着单反相机,从香港一侧进入莲塘口岸,经过快捷通道顺利通过闸口,踏入尼克斯记者国王有意得到德里克罗斯直播吧2月10日讯据尼克斯记者IanBegley报道,消息人士透露,国王最近有意得到德里克罗斯。本赛季至今,罗斯为尼克斯出战了26场比赛,场均12。9分钟可以得到5。8分1。5篮板出入境证件办理一号难求,怎样刷到名额?港澳免费机票怎么领?上海春秋旅行社导游师文,今天一早7点就到了机场,帮着团友值机。他从包里拿出三年未用的导游旗杆,插上一面崭新的导游旗。自2020年1月23日,带着30人在缅甸过了一个中国年后,这是师