城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

CCQtListWidget列表框组件应用

12月8日 栀璃鸢投稿
  ListWidget列表框组件,该组件与TreeWidget有些相似,区别在于TreeWidget可以实现嵌套以及多字段结构,而ListWidget组件则只能实现单字段结构,ListWidget组件常用于显示单条记录,例如只显示IP地址,用户名等数据,如下笔记是本人在开发中经常用到的一些基本操作技巧,包括列表框组件的基本操作方法。
  常用节点间的操作方法如下:ListView组件与应用基础ListWidget初始化ListWidget变化行(触发事件)ListWidget编辑状态设置ListWidget全选全不选ListWidget反选(对错交织)ListWidget指定位置插入增加一项ListWidget删除选中项
  ListView组件与应用基础:该组件与ListWidget功能一致,只是ListView无法实现编辑只能预览。includemainwindow。hincludeuimainwindow。hincludeQListViewincludeQStandardItemincludeQStringListModelMainWindow::MainWindow(QWidgetparent):QMainWindow(parent),ui(newUi::MainWindow){uisetupUi(this);}MainWindow::MainWindow(){}初始化View组件向ListView组件中填充数据By:LySharkhttps:www。cnblogs。comlysharkvoidMainWindow::onpushButtonclicked(){QStringLQStringListM追加数据到ListView中dataQString(192。168。1。1);dataQString(192。168。1。2);dataQString(192。168。1。3);dataQString(192。168。1。4);modelnewQStringListModel(data);uilistViewsetModel(model);移除第1个地址data。removeAt(0);再次刷新ListViewmodelnewQStringListModel(data);uilistViewsetModel(model);}实现间隔初始化,每一行一种颜色voidMainWindow::onpushButton2clicked(){QStringLQStandardItemModelmodelnewQStandardItemModel();清空记录modelremoveRows(0,modelrowCount());追加数据到ListView中dataQString(192。168。1。1);循环追加for(intx2;x5;x){dataQString(192。168。1。0)。arg(x);}输出到ListView记录intnCountdata。size();for(intx0;xnCx){QStringstringstaticcastQString(data。at((x)));强转为QString类型QStandardItemitemnewQStandardItem(string);if(x20){设置色彩QLinearGradientlineargrad(QPointF(0,0),QPointF(200,200));lineargrad。setColorAt(0,Qt::darkGreen);QBrushbrush(lineargrad);itemsetBackground(brush);}追加到mode模型modelappendRow(item);}设置模型uilistViewsetModel(model);uilistViewsetFixedSize(200,300);}
  代码运行效果如下:
  上方代码中我们多数都是在使用View视图组件,接下来将具体分析Widget组件的使用细节,View组件与Widget组件看似一致,但却存在本质区别,其大致区别如下:Widget组件可以直接通过如AddItem等一系列函数操作特定数据集,该组件还具有直接编辑的能力。View组件是基于Model模型映射工作的,每次操作数据时都需要借助QAbstractListModel数据模型来操作。
  简单来说View组件适合于浏览展示数据较多的场景,因为其绑定了链表结构从而在数据的展示上更为灵活,而Widget组件更适合于更新或修改数据较多的使用场景。
  ListWidget节点初始化:节点的初始化就是向widget组件内插入一个QListWidgetItem类。初始化列表listWidgetBy:LySharkvoidMainWindow::onpushButtonclicked(){每一行是一个QListWidgetItemQListWidgetItemaI设置ICON的图标QIconaIaIcon。addFile(:image1。ico);uilistWidgetclear();for(intx0;x10;x){QStringstrQString::asprintf(192。168。1。d,x);aItemnewQListWidgetItem();新建一个项aItemsetText(str);设置文字标签aItemsetIcon(aIcon);设置图标aItemsetCheckState(Qt::Checked);设为选中状态aItemsetFlags(Qt::ItemIsSelectable设置为不可编辑状态Qt::ItemIsUserCheckableQt::ItemIsEnabled);uilistWidgetaddItem(aItem);增加项}}
  代码运行效果如下:
  ListWidget行内文本变化:当我们点击行内任意一个列表选项时,我们让其触发currentItemChanged并将变化行更新到窗体上。listWidget当前选中项发生变化By:LySharkvoidMainWindow::onlistWidgetcurrentItemChanged(QListWidgetItemcurrent,QListWidgetItemprevious){QSif(current!NULL)需要检测变量指针是否为空{if(previousNULL)需要检测变量指针是否为空{str当前:currenttext();thissetWindowTitle(QString(currenttext()));}else{str前一项:previoustext();当前项:currenttext();std::coutstr。toStdString()。data()std::thissetWindowTitle(QString(currenttext()));}}}
  代码运行效果如下:
  ListWidget编辑状态设置:默认情况下ListWidget组件内所有文件是不可编辑的,我们也可以将编辑属性打开。设置所有项设置为可编辑状态https:www。cnblogs。comlysharkvoidMainWindow::onpushButton5clicked(){intx,QListWidgetItemaIcntuilistWidgetcount();for(x0;x){aItemuilistWidgetitem(x);aItemsetFlags(Qt::ItemIsSelectableQt::ItemIsEditableQt::ItemIsUserCheckableQt::ItemIsEnabled);}}
  代码运行效果如下:
  ListWidget全选全不选:全选顾名思义就是选中菜单中的所有数据,使用aItemsetCheckState(Qt::Checked)实现选中,通过循环计数即可。全选按钮https:www。cnblogs。comlysharkvoidMainWindow::onpushButton2clicked(){intcntuilistWidgetcount();获取总数for(intx0;x){QListWidgetItemaItemuilistWidgetitem(x);获取到一项指针aItemsetCheckState(Qt::Checked);设置为选中}}全不选By:LySharkvoidMainWindow::onpushButton3clicked(){intcntuilistWidgetcount();获取总数for(intx0;x){QListWidgetItemaItemuilistWidgetitem(x);获取到一项指针aItemsetCheckState(Qt::Unchecked);设置为非选中}}
  代码运行效果如下:
  ListWidget反选功能:反选的含义是,用户选中菜单反选后会变为未选中状态,未选中则变为选中,只需要增加一个判断即可实现。By:LySharkvoidMainWindow::onpushButton4clicked(){intx,QListWidgetItemaIcntuilistWidgetcount();for(x0;x){aItemuilistWidgetitem(x);if(aItemcheckState()!Qt::Checked)aItemsetCheckState(Qt::Checked);elseaItemsetCheckState(Qt::Unchecked);}}
  代码运行效果如下:
  ListWidget指定位置插入追加插入:在选中行的上方插入一行新的表项,以及追加到末尾一行。指定位置插入一项www。cnblogs。comlysharkvoidMainWindow::onpushButton8clicked(){QIconaIaIcon。addFile(:image3。ico);QListWidgetItemaItemnewQListWidgetItem(插入的数据);aItemsetIcon(aIcon);aItemsetCheckState(Qt::Checked);aItemsetFlags(Qt::ItemIsSelectableQt::ItemIsUserCheckableQt::ItemIsEnabled);在当前行的上方插入一个项uilistWidgetinsertItem(uilistWidgetcurrentRow(),aItem);}增加一项,尾部追加voidMainWindow::onpushButton7clicked(){QIconaIaIcon。addFile(:image2。ico);QListWidgetItemaItemnewQListWidgetItem(新增的项目);增加项目名aItemsetIcon(aIcon);设置图标aItemsetCheckState(Qt::Checked);设置为选中aItemsetFlags(Qt::ItemIsSelectableQt::ItemIsUserCheckableQt::ItemIsEnabled);uilistWidgetaddItem(aItem);增加到控件}
  代码运行效果如下:
  ListWidget删除选中项:删除当前选中的一项,并清理释放内存。删除选中项voidMainWindow::onpushButton6clicked(){introwuilistWidgetcurrentRow();获取当前行QListWidgetItemaItemuilistWidgettakeItem(row);移除指定行的项,但不deletedeleteaI释放空间}
  代码运行效果如下:
投诉 评论 转载

小体积爆发巨能量宇宙中可以制造X射线的存在类星体是类似恒星天体的简称,又称为似星体、魁霎或类星射电源,与脉冲星、微波背景辐射和星际有机分子一起被称为20世纪60年代天文学四大发现。但是类星体一直都很神秘,因此天文学家一……抢眼!首发H55酷睿i9独占最强R9,全系RTX40,ROG对于笔记本用户而言,2023年无疑是最值得升级手上设备的日子。在这一年不仅迎来了全新的CPU,同时GPU方面也进行了相对应的更新,可以说是双双一同迭代了。在CES2023上,R……CBA三消息新疆签回后卫老将,山东力挺主教练,陶汉林地位直降大家好呀,我是北柠,各位小伙伴们要养成先看后赞的习惯哦!新疆队这个赛季的状态已经越来越好,特别是第二阶段常规赛开打之后,球队的实力有了明显的进步,他们的队长阿不都表现越来……日产稳住了?假象!百万销量的背后是日产的无可挽回的衰落没有想到,全民唱衰的日产全年销量一百万辆之多!看这数据那是相当的不错,是多少国产车难以企及的销量啊!然而事实真是如此吗?来自网络从数据来看,日产全年的销量同比下跌2……读伤寒论的好处读《伤寒论》有什么好处呢?有心研究经方的有志之士必须知道一点,就是因为有了《伤寒论》的六经辨证法则的基础,我们经方家就敢大剂量的使用经方。经方都是使用极峻的药,讲究的是一剂就知……梦幻西游取号69简易神木林,全身70装备,刷任务就是俩字舒服Hello大家好,我是浩仔!关注浩仔,每天给你带来最新梦幻西游游戏资讯!以下点评仅代表个人意见,不代表官方或平台立场。昨天浩仔给大家带来了一个175级凌波城的……读红楼梦学处世避嫌艺术杨纯文在人际社会纷繁复杂的交往中,难免经常会遇到一些令人烦恼的事,好端端的事却被人猜疑误解,这是一种有口难辩的烦恼。本文作者也许你也有过这样的经历,例如别人某件事情没有办……CCQtListWidget列表框组件应用ListWidget列表框组件,该组件与TreeWidget有些相似,区别在于TreeWidget可以实现嵌套以及多字段结构,而ListWidget组件则只能实现单字段结构,L……围绕三农工作服务乡村振兴中国农业银行东莞分行民族要复兴,乡村必振兴。近年来,农行东莞分行紧密围绕三农工作部署,用心用情用力服务乡村振兴,努力汇聚庞大的金融动能,助力农业高质高效、乡村宜居宜业、农……曝湖人正式报价范乔丹,丰厚筹码太有诚意了头条创作挑战赛随着交易开启日期即将到来,湖人队终于还是坐不住,多重消息曝出湖人队有交易的意向。根据BR记者EricPincus的报道,消息人士透露,湖人队对武切维奇和德罗……卡椒缺阵!快船16分完败!保罗1513,两替补闪耀!太阳终结NBA常规赛继续进行,3连胜的快船队背靠背坐镇主场,迎来了5连败的太阳队的挑战。最终经过4节比赛的交手后,太阳队以11195大胜快船队,不虚此行拿下一场16分大胜!……小麦价格大跌,12月18日全国最新小麦行情小麦价格开始全线塌方式的下跌,华北32家面粉企业全线同时下跌,落价幅度之大,次数之多,是近两个月以来最凶猛的一次,农民老铁们大家好,今天是12月18日,有道是星星之火可以燎原,……
年入百万十分艰难但月入过万轻松互联网赚钱要跟对趋脑出血有什么急救关键点捡钱分钱骗局是利用人们的哪些心理如何应对手汗这5位明星一门心思捞钱,不好好演戏,毁了口碑花卉烟青虫的防治方法有哪些报导造句用报导造句大全备孕期间必吃的食物有哪些麦当劳新品脆汁鸡是哪三块麦当劳麦麦脆汁鸡好吃吗测测看你的防备心理有多重留学就餐学问晚间悦读丨相信美好的你,终会遇见美好

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找