Qt制作一个ListView列表
1、概述
案例:使用Qt制作一个ListView。点击ListView的Item可以用于测试OpenCV的各种效果
自定义一个:MainListView继承QListWidget、MainListViewItem继承QListWidgetItem2、代码示例
1。自定义QListWidget
mainlistview。hclassMainListView:publicQListWidget{QOBJECTpublic:explicitMainListView(QWidgetparentnullptr);protected:voidmousePressEvent(QMouseEventevent);voidmouseReleaseEvent(QMouseEventevent);voidmouseMoveEvent(QMouseEventevent);voidleaveEvent(QEventevent);private:QPointstartPoint;MainListViewItemtheHighlightItemnullptr;MainListViewItemoldHighlightItemnullptr;MainListViewItemtheSelectedItemnullptr;MainListViewItemoldSelectedItemnullptr;Chapter3OptionoptionnewChapter3Option();signals:publicslots:voidupdateSelectedIcon();voidonMainItemClick(QListWidgetItemitem);};
mainlistview。cppincludemainlistview。hMainListView::MainListView(QWidgetparent):QListWidget(parent){setMouseTracking(true);连接信号与槽函数,如果选中项发生变化则触发item图标的更新。都是当前对象发生connect(this,MainListView::itemSelectionChanged,this,MainListView::updateSelectedIcon);connect(this,MainListView::itemClicked,this,MainListView::onMainItemClick);}处理鼠标hove事件,item图标就变成hove状态,QT开发交流赀料君羊:714620761briefMainListView::mouseMoveEventparameventvoidMainListView::mouseMoveEvent(QMouseEventevent){oldHighlightItemtheHighlightItem;theHighlightItemstaticcastMainListViewItem(itemAt(eventpos()));旧的hover的item图标回复原状(条件是该item没有被选中)新的hover的iten图标变成hover状态(条件是该item没有被选中)if(oldHighlightItem!theHighlightItem){if(oldHighlightItem!oldHighlightItemisSelected())oldHighlightItemsetIcon(oldHighlightItemmIcon);if(theHighlightItem!theHighlightItemisSelected())theHighlightItemsetIcon(theHighlightItemmIconHover);}}鼠标按下(这个可以当做item的点击事件,能够正常执行)briefMainListView::mousePressEventparameventvoidMainListView::mousePressEvent(QMouseEventevent){if(eventbuttons()Qt::LeftButton){startPointeventpos();MainListViewItemitemstaticcastMainListViewItem(itemAt(eventpos()));QStringfilePathQFileDialog::getOpenFileName(this,tr(选择视频),C:Userswei。yangDownloadsopencvres,tr(ImageFiles(。jpg。png)));constcharfileRealPathfilePath。toStdString()。cstr();将QString转换为charqDebug()itemtext()fileRealPathpos:itemmPos;switch(itemmPos){case1:显示原图optionshowSrcImage(fileRealPath);break;case2:像素取反optionpixleReverse(fileRealPath);break;case3:图像融合optionimageFuse(,);break;case4:调整图像亮度及对比度optionincreaseBrightnessContrastRatio(fileRealPath);break;case5:绘制线、矩形、椭圆、圆、多边形、文本optiondrawShape();break;case6:均值模糊:用于图像的降噪optionshowBlur(fileRealPath);break;case7:高斯模糊:用于图像的降噪,其对自然界的噪声有很好的抑制作用optionshowGaussianBlue(fileRealPath);break;case8:中值滤波:终止滤波用于图像的降噪,其对椒盐噪声有很好的抑制作用(黑白点)optionshowMediaBlur(fileRealPath);break;case9:双边滤波:其可以很好的保留边缘的同时对平坦区域进行降噪optionshowBilateralFilter(fileRealPath);break;case10:提起图像中的英文字母optionshowCleanImage(fileRealPath);break;case11:形态学开操作optionshowImageOpen(fileRealPath);break;case12:形态学闭操作optionshowImageClose(fileRealPath);break;case13:形态学梯度(基本梯度):膨胀减去腐蚀optionshowMorphologicalGradient(fileRealPath);break;case14:顶帽操作:相当于原图像与开操作之间的差值图像optionshowTopHat(fileRealPath);break;case15:黑帽操作:相当于原图像与闭操作之间的差值图像optionshowBlackHat(fileRealPath);break;case16:小案例:提取提取项目中的字母或者直线optionshowLines(fileRealPath,0);break;case17:上采样:利用拉普拉斯金字塔进行图像重建optionshowPyrUp(fileRealPath);break;case18:降采样:利用高斯金字塔进行降采样optionshowPyrDown(fileRealPath);break;case19:高斯不同:把同一张图片再不同的参数下做高斯模糊之后的结果相减,得到的输出图像称为高斯不同optionshowGaussianDiff(fileRealPath);break;case20:使用自定义卷积核filter2DoptionshowCustomKernelFilter2D(fileRealPath,1);break;case21:1。合并rebort和sobel的x方向梯度和y方向的梯度optionshowCustomKernelFilter2DMergeXY(fileRealPath);break;case22:填充图像边缘optionshowCopyMakeBorder(fileRealPath);break;case23:使用Sobel和Scharr计算图形梯度optionshowSobelAndScharr(fileRealPath);break;case24:使用拉普拉斯算子显示梯度图像optionshowLaplacian(fileRealPath);break;case25:边缘检测optionshowCanny(fileRealPath);break;}}}释放鼠标briefMainListView::mouseReleaseEventparameventvoidMainListView::mouseReleaseEvent(QMouseEventevent){如果鼠标释放位置和单击位置相距超过5像素,则不会触发item选中if((eventpos()startPoint)。manhattanLength()5)return;MainListViewItemitemstaticcastMainListViewItem(itemAt(eventpos()));setCurrentItem(item);}处理鼠标离开后,hover图标回复正常状态briefMainListView::leaveEventparameventvoidMainListView::leaveEvent(QEventevent){QUNUSED(event);oldHighlightItemtheHighlightItem;if(oldHighlightItem!oldHighlightItemisSelected())oldHighlightItemsetIcon(oldHighlightItemmIcon);oldHighlightItemtheHighlightItemnullptr;}voidMainListView::updateSelectedIcon(){oldSelectedItemtheSelectedItem;theSelectedItemstaticcastMainListViewItem(currentItem());之前被选中的item图标回复原样新被选中的item图标变成hover状态if(oldSelectedItem!theSelectedItem){if(oldSelectedItem)oldSelectedItemsetIcon(oldSelectedItemmIcon);if(theSelectedItem)theSelectedItemsetIcon(theSelectedItemmIconHover);}}这个槽函数并没有执行voidMainListView::onMainItemClick(QListWidgetItemitem){qDebug()点击了item的项目;}
2。自定义QListWidgetItem
mainlistviewitem。hclassMainListViewItem:publicQListWidgetItem{QOBJECT由于QListWidgetItem没有QObject属性,所以QOBJECT需要注释掉public:explicitMainListViewItem(QStringitemTitle,constQIconicon,constQIconiconHover,intpos,QListWidgetparentnullptr);设置item的图标briefsetItemIconparamiconparamiconHovervoidsetItemIcon(constQIconicon,constQIconiconHover);public:QIconmIcon;默认图标QIconmIconHover;选中时图标intmPos;第一个编辑signals:};
mainlistviewitem。cppincludemainlistviewitem。h自定义主页ListView的Item项briefMainListViewItem::MainListViewItemparamparentMainListViewItem::MainListViewItem(QStringitemTitle,constQIconicon,constQIconiconHover,intpos,QListWidgetparent):QListWidgetItem(parent){setText(itemTitle);mIconicon;mIconHovericonHover;setIcon(mIcon);setSizeHint(QSize(360,47));mPospos;}
3。使用voidMainWindow::createListView(QWidgetparent){listViewnewMainListView(this);listViewsetFocusPolicy(Qt::NoFocus);这样可禁用tab键和上下方向键并且除去复选框listViewsetFixedHeight(320);listViewsetFont(QFont(宋体,14,QFont::DemiBold));listViewsetFixedSize(QSize(360,480));listViewmove(0,menuBar()height());listViewsetStyleSheet({outline:0px;}除去复选框MainListViewItem{background:rgb(245,245,247);border:0px;margin:0px0px0px0px;}MainListViewItem::Item{height:40px;border:0px;paddingleft:14px;color:rgba(200,40,40,255);}MainListViewItem::Item:hover{color:rgba(40,40,200,255);}MainListViewItem::Item:selected{background:rgb(230,231,234);color:rgba(40,40,200,255);borderleft:4pxsolidrgb(180,0,0);}QListWidget::Item:selected:active{background:rgb(230,231,234);color:rgba(40,40,200,255);borderleft:4pxsolidrgb(180,0,0);});newMainListViewItem(显示原图,QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),1,listView);newMainListViewItem(tr(像素取反),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),2,listView);newMainListViewItem(tr(图像融合),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),3,listView);newMainListViewItem(tr(调整图像亮度及对比度),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),4,listView);newMainListViewItem(tr(绘制线、矩形、椭圆、圆、多边形、文本),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),5,listView);newMainListViewItem(tr(均值模糊),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),6,listView);newMainListViewItem(tr(高斯模糊),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),7,listView);newMainListViewItem(tr(中值滤波),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),8,listView);newMainListViewItem(tr(双边滤波),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),9,listView);newMainListViewItem(tr(提取图像中的英文字母),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),10,listView);newMainListViewItem(tr(形态学开操作),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),11,listView);newMainListViewItem(tr(形态学闭操作),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),12,listView);newMainListViewItem(tr(形态学梯度(基本梯度)),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),13,listView);newMainListViewItem(tr(顶帽操作),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),14,listView);newMainListViewItem(tr(黑帽操作),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),15,listView);newMainListViewItem(tr(小案例:提取提取项目中的字母或者直线),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),16,listView);newMainListViewItem(tr(上采样),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),17,listView);newMainListViewItem(tr(降采样),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),18,listView);newMainListViewItem(tr(高斯不同),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),19,listView);newMainListViewItem(tr(使用自定义卷积核filter2D),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),20,listView);newMainListViewItem(tr(合并rebort及Sobel的x方向梯度和y方向的梯度),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),21,listView);newMainListViewItem(tr(填充图像边缘),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),22,listView);newMainListViewItem(tr(使用Sobel和Scharr计算图形梯度),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),23,listView);newMainListViewItem(tr(使用拉普拉斯算子显示梯度图像),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),24,listView);newMainListViewItem(tr(边缘检测),QIcon(:resiconmainlist。png),QIcon(:resiconmainlist。png),25,listView);connect(listView,MainListView::itemClicked,listView,MainListView::onMainItemClick);}最后一步:创建ListView,然后运行就行了createListView(this);3、图片演示
卡德罗夫实现诺言,超2万名车臣士兵上前线,乌军胜算没想象中大俄乌冲突爆发后,车臣士兵迅速响应卡德罗夫的呼吁,接连上前线,日前,卡德罗夫公开了一份数据,称已经有超过两万名参与了这场冲突。卡德罗夫全力支持普京,2。1万人上前线中新网消息称,俄罗
丫蛋三胎生子!全家陪产公婆喜报孙子6。1斤,网友这次嫁对人了丫蛋自从在央视春晚上表演小品不差钱而出道,身材娇小的她流亮高昂的嗓门,给人留下了非常深刻的印象。在本山团队中,丫蛋算不上最出名的,但她对工作对人生都很认真,因此很多徒弟口碑崩塌,到
尴尬了谁?清华大学柳冠中教授一针见血,批评一些专家成网红2022年是不平凡的一年,也是专家声誉扑街的一年,不管是哪方面的专家,预测的结果都有很大的偏差。一些大学的知名教授,学者对一些热点事件的解读基本都是南辕北辙的,出现了严重的误导。针
2027年山东人均生产总值达11万元,人均可支配收入增长5以上2023年是全面贯彻落实党的二十大精神的开局之年。过去五年,山东取得了哪些成绩?未来五年,又将如何谱写中国式现代化山东篇章?1月13日上午,山东省第十四届人民代表大会第一次会议开幕
多家景区免费!春节进入倒计时景区免费的好消息一个接一个传来今天,小编搜罗了一大圈为大家找来了省内外春节期间免费景区的最新消息快快收藏转发约上亲爱的家人朋友一起玩转春节假期吧!花果山景区免门票政策
视点炊事员保胃战,真香!文图李强石涵予林浩男李凯当军营遇上美食大咖会碰撞出怎样的火花伙食保障关乎战斗力生成怎么让战士们吃饱吃舒心是炊事员经常琢磨的问题近期,东部战区空军某场站组织炊事员开展主食制作技能培训
健瑞儿集团荣获第十届全国品牌故事大赛总决赛两项奖项新海南客户端南海网南国都市报1月14日消息(记者陈望)近日,第十届全国品牌故事大赛总决赛获奖结果公布,健瑞儿集团(海南)有限公司创作的为爱而生向阳而行获得大赛征文比赛二等奖,其推出
剧精彩!CMG首届中国电视剧年度盛典在京举行光影筑梦,绘时代精神谱系匠心创造,领大剧精品潮流。1月14日晚,由中央广播电视总台主办的CMG首届中国电视剧年度盛典在京举行。中宣部副部长中央广播电视总台台长慎海雄出席,并为年度优
韩国人来不了中国,韩国商场第一个撑不住了最近,韩国对中国旅客的黄牌风波,闹的沸沸扬扬。这已经不属于防疫范畴了,而是人身攻击,是一种极具歧视性的侮辱行为,士可忍,孰不可忍啊。所以,1月10日,中国驻韩国大使馆发表声明,直接
男单4强诞生!国乒全军覆没,欧洲3人晋级,巴西选手成夺冠大热门乒乓球WTT南非德班挑战赛已进入尾声,北京时间1月14日晚,男单四强名单终于全部出炉,国乒6人参赛全军覆没被团灭,最后的希望林诗栋苦战五局输给巴西选手雨果,而雨果也凭借头号种子的身
中国梦大国工匠篇洁白的织锦五彩的丝线灵巧的双手翻飞的银针走进河南省开封市东郊王素花家中,88岁的她正在创作千里江山图中的局部小品。小小的绣花针连着五彩的丝线穿梭于锦缎之上,精美细腻生动灵巧的花鸟鱼
小米13手机海外版即将发布,配备灵动岛设计风格,有三种版本小米13手机海外版本即将在国外发布,也就是小米13小米13Pro与小米13Lite三种版本,预计发布时间会在2月26日,与国行版本的小米13相比,小米13海外版本的配置参数基本相同
哪些烹饪细节的改变,能让做菜突然变好吃?开店的时候,有一次师父去店里串门,正好我在做小炒肉,因为那天有些累,炒菜有点心不在焉的。放酱油的时候没有烹,而且直接倒进了锅里,没想到这么一个小事,引来了师父的极度不满。老爷子是个
三星小米和vivo减少孟加拉国手机产能集微网消息,随着经济和金融压力重创孟加拉国并迫使消费者减少支出,包括三星电子小米和vivo在内的手机制造商减少或调整当地手机组装,孟加拉国曾经繁荣的手机市场出现下滑。据日经亚洲评论
好滋润!不用开明火做的梨,很适合这个季节吃,做法也超省事梨,有名的清热润燥的水果。平时,说话多了,嗓子干,吃个梨,立马会感觉滋润许多。虽然到了春天,但是气候还是挺干燥,所以每次买水果,都可以带上几个梨。之前和大家分享过梨汤的做法,今天再
粤菜砂锅鱼腩煲的家常做法,鱼肉不腥,鲜嫩入味,开盖香气迷人粤菜中有很多砂锅系列的菜肴,食之嫩,味之鲜,闻则香,这就是我印象中的砂锅菜肴,也正因为这样,它才有足够强大的吸引力抓住食客的胃口。撇开这些诱人食欲的因素,还有一个让人喜欢的地方,那
一键获取情感文案视频,分享给懂你的人1。也许我偶尔还是会想他,偶尔想他也是难免的,就当他是老朋友吧,这也让我心疼,让我担心2。那里落叶随风流淌,只留下一片美丽的天空,从飞翔的身躯到天使的翅膀,划过我幸福的过往3。每当
执子之手与子偕老的浪漫情事一辈子很长,如果大家都肆无忌惮的,由着自己的性情,由着自己的感情,能相处一块去才怪。尤其是在一起时间久了,日子过得平凡又枯燥。平凡的生活从来不是不幸,心踏实不下来,静不下来,才是不
夜读一个春日的下午主播读经典,陪你说晚安。大家好,这里是闪电夜读,我是青州融媒主播梦娜。今晚与您分享席慕容的文章一个春日的下午。一个春日的下午文丨席慕容很小的时候,在南京住过两年。有一次,有人给了我
人老了,在离世之前,需要尽快告诉儿女四件事01hr教育家陶行知说过捧得一颗心来,不带半根草去。生老病死是人生的规律,与其担心焦虑,不如顺其自然。当一个人很老的时候,就应该开了人生的归途了。作为普通人的过世,不会产生巨大的反
老人如何在子女面前活得有尊严老人如何在子女面前活得有尊严现在,年轻人压力大,连眼前自己活蹦乱跳时的生活都应付艰难,想想以后老了不能动了,那得活得多憋屈。靠儿女?万一儿女到时候日子过得比我们现在这一代人还艰难怎
同样是茶,绿茶和红茶哪个更好喝?行家差距很大,了解清楚再喝喝茶是对身体百益而无任何负担的天然饮品,而且长期喝茶还能自然养成良好的心态,茶中的营养物质丰富,而且丝滑甘醇的茶汤能缓解人的疲惫和压力。因此喝茶也非常适合现代生活节奏较快的年轻人。