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

Qt制作一个ListView列表

  1、概述
  案例:使用Qt制作一个ListView。点击ListView的Item可以用于测试OpenCV的各种效果
  自定义一个:MainListView继承QListWidget 、MainListViewItem继承QListWidgetItem2、代码示例
  1.自定义QListWidget
  mainlistview.hclass MainListView : public QListWidget {     Q_OBJECT public:     explicit MainListView(QWidget *parent = nullptr); protected:     void mousePressEvent(QMouseEvent *event);     void mouseReleaseEvent(QMouseEvent *event);     void mouseMoveEvent(QMouseEvent *event);     void leaveEvent(QEvent *event); private:     QPoint startPoint;     MainListViewItem *theHighlightItem = nullptr;     MainListViewItem *oldHighlightItem = nullptr;     MainListViewItem *theSelectedItem = nullptr;     MainListViewItem *oldSelectedItem = nullptr;     Chapter3Option * option = new Chapter3Option();   signals:   public slots:     void updateSelectedIcon();     void onMainItemClick(QListWidgetItem *item); };
  mainlistview.cpp#include "mainlistview.h"  MainListView::MainListView(QWidget *parent) : QListWidget(parent) {     setMouseTracking(true);     //连接信号与槽函数,如果选中项发生变化则触发item图标的更新.都是当前对象发生     connect(this,&MainListView::itemSelectionChanged,this,&MainListView::updateSelectedIcon);     connect(this,&MainListView::itemClicked,this,&MainListView::onMainItemClick); }  /**  * 处理鼠标hove事件,item图标就变成hove状态,QT开发交流+赀料君羊:714620761  * @brief MainListView::mouseMoveEvent  * @param event  */ void MainListView::mouseMoveEvent(QMouseEvent *event){     oldHighlightItem = theHighlightItem;     theHighlightItem = static_cast(itemAt(event->pos()));     //旧的hover的item图标回复原状(条件是该item没有被选中)     //新的hover的iten图标变成hover状态(条件是该item没有被选中)     if(oldHighlightItem != theHighlightItem){        if(oldHighlightItem && !oldHighlightItem->isSelected()) oldHighlightItem->setIcon(oldHighlightItem->mIcon);        if(theHighlightItem && !theHighlightItem->isSelected()) theHighlightItem->setIcon(theHighlightItem->mIconHover);     } }  /**  * 鼠标按下(这个可以当做item的点击事件,能够正常执行)  * @brief MainListView::mousePressEvent  * @param event  */ void MainListView::mousePressEvent(QMouseEvent *event){     if(event->buttons()&Qt::LeftButton){         startPoint = event->pos();         MainListViewItem *item = static_cast(itemAt(event->pos()));         QString filePath = QFileDialog::getOpenFileName(this, tr("选择视频"), "C:Userswei.yangDownloadsopencv_res", tr("Image Files(*.jpg *.png)"));         const char *fileRealPath = filePath.toStdString().c_str();//将QString转换为char*         qDebug() <text()<<"--->"<pos:"<mPos;         switch (item->mPos) {         case 1://显示原图             option->showSrcImage(fileRealPath);             break;         case 2://像素取反             option->pixleReverse(fileRealPath);             break;         case 3://图像融合             option->imageFuse("","");             break;         case 4://调整图像亮度及对比度             option->increaseBrightnessContrastRatio(fileRealPath);             break;         case 5://绘制线、矩形、椭圆、圆、多边形、文本             option->drawShape();             break;         case 6://均值模糊:用于图像的降噪             option->showBlur(fileRealPath);             break;         case 7://高斯模糊:用于图像的降噪,其对自然界的噪声有很好的抑制作用             option->showGaussianBlue(fileRealPath);             break;         case 8://中值滤波:终止滤波用于图像的降噪,其对椒盐噪声有很好的抑制作用(黑白点)             option->showMediaBlur(fileRealPath);             break;         case 9://双边滤波:其可以很好的保留边缘的同时对平坦区域进行降噪             option->showBilateralFilter(fileRealPath);             break;         case 10://提起图像中的英文字母              option->showCleanImage(fileRealPath);             break;         case 11://形态学开操作             option->showImageOpen(fileRealPath);             break;         case 12:// 形态学闭操作             option->showImageClose(fileRealPath);             break;         case 13://形态学梯度(基本梯度):膨胀减去腐蚀              option->showMorphologicalGradient(fileRealPath);             break;         case 14://顶帽操作:相当于原图像与开操作之间的差值图像              option->showTopHat(fileRealPath);             break;         case 15://黑帽操作:相当于原图像与闭操作之间的差值图像              option->showBlackHat(fileRealPath);             break;         case 16://小案例:提取提取项目中的字母或者直线              option->showLines(fileRealPath,0);             break;         case 17://上采样:利用拉普拉斯金字塔进行图像重建             option->showPyrUp(fileRealPath);             break;         case 18://降采样:利用高斯金字塔进行降采样              option->showPyrDown(fileRealPath);             break;         case 19://高斯不同:把同一张图片再不同的参数下做高斯模糊之后的结果相减,得到的输出图像称为高斯不同             option->showGaussianDiff(fileRealPath);             break;         case 20://使用自定义卷积核filter2D              option->showCustomKernelFilter2D(fileRealPath,1);             break;         case 21://1.合并rebort和sobel的x方向梯度和y方向的梯度              option->showCustomKernelFilter2DMergeXY(fileRealPath);             break;         case 22://填充图像边缘             option->showCopyMakeBorder(fileRealPath);             break;         case 23://使用Sobel和Scharr计算图形梯度             option->showSobelAndScharr(fileRealPath);             break;         case 24://使用拉普拉斯算子显示梯度图像              option->showLaplacian(fileRealPath);             break;         case 25://边缘检测             option->showCanny(fileRealPath);             break;         }     } }  /**  * 释放鼠标  * @brief MainListView::mouseReleaseEvent  * @param event  */ void MainListView::mouseReleaseEvent(QMouseEvent *event){     //如果鼠标释放位置和单击位置相距超过5像素,则不会触发item选中     if((event->pos() - startPoint).manhattanLength() > 5) return;     MainListViewItem *item = static_cast(itemAt(event->pos()));     setCurrentItem(item);  } /**  * 处理鼠标离开后,hover图标回复正常状态  * @brief MainListView::leaveEvent  * @param event  */ void MainListView::leaveEvent(QEvent *event){     Q_UNUSED(event);     oldHighlightItem = theHighlightItem;     if(oldHighlightItem && !oldHighlightItem->isSelected()) oldHighlightItem->setIcon(oldHighlightItem->mIcon);     oldHighlightItem = theHighlightItem = nullptr;  }  void MainListView::updateSelectedIcon(){     oldSelectedItem = theSelectedItem;     theSelectedItem = static_cast(currentItem());      //之前被选中的item图标回复原样     //新被选中的item图标变成hover状态     if(oldSelectedItem != theSelectedItem){         if(oldSelectedItem) oldSelectedItem->setIcon(oldSelectedItem->mIcon);         if(theSelectedItem) theSelectedItem->setIcon(theSelectedItem->mIconHover);     } }   //这个槽函数并没有执行 void MainListView::onMainItemClick(QListWidgetItem *item){     qDebug() << "点击了item的项目"; }
  2.自定义QListWidgetItem
  mainlistviewitem.hclass MainListViewItem : public QListWidgetItem {      //Q_OBJECT  //由于QListWidgetItem没有QObject属性,所以Q_OBJECT需要注释掉 public:     explicit MainListViewItem(QString itemTitle,const QIcon &icon, const QIcon &iconHover,int pos,QListWidget *parent = nullptr);     /**      * 设置item的图标      * @brief setItemIcon      * @param icon      * @param iconHover      */ //    void setItemIcon(const QIcon &icon,const QIcon &iconHover); public:     QIcon mIcon;//默认图标     QIcon mIconHover;//选中时图标     int mPos;//第一个编辑  signals:  };
  mainlistviewitem.cpp#include "mainlistviewitem.h"   /**  * 自定义主页ListView的Item项  * @brief MainListViewItem::MainListViewItem  * @param parent  */ MainListViewItem::MainListViewItem(QString itemTitle,const QIcon &icon, const QIcon &iconHover,int pos,QListWidget *parent) : QListWidgetItem(parent) {     setText(itemTitle);     mIcon = icon;     mIconHover = iconHover;     setIcon(mIcon);     setSizeHint(QSize(360,47));     mPos = pos; }
  3.使用void MainWindow::createListView(QWidget *parent){     listView = new MainListView(this);     listView->setFocusPolicy(Qt::NoFocus);  //这样可禁用tab键和上下方向键并且除去复选框     listView->setFixedHeight(320);     listView->setFont(QFont("宋体", 14, QFont::DemiBold));     listView->setFixedSize(QSize(360,480));     listView->move(0,menuBar()->height());     listView->setStyleSheet(                 "{outline:0px;}"  //除去复选框                 "MainListViewItem{background:rgb(245, 245, 247); border:0px; margin:0px 0px 0px 0px;}"                 "MainListViewItem::Item{height:40px; border:0px; padding-left: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); border-left:4px solid rgb(180, 0, 0);}"                 "QListWidget::Item:selected:active{background:rgb(230, 231, 234); color:rgba(40, 40, 200, 255); border-left:4px solid rgb(180, 0, 0);}");      new MainListViewItem("显示原图",QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),1,listView);     new MainListViewItem(tr("像素取反"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),2,listView);     new MainListViewItem(tr("图像融合"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),3,listView);     new MainListViewItem(tr("调整图像亮度及对比度"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),4,listView);     new MainListViewItem(tr("绘制线、矩形、椭圆、圆、多边形、文本"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),5,listView);     new MainListViewItem(tr("均值模糊"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),6,listView);     new MainListViewItem(tr("高斯模糊"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),7,listView);     new MainListViewItem(tr("中值滤波"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),8,listView);     new MainListViewItem(tr("双边滤波"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),9,listView);     new MainListViewItem(tr("提取图像中的英文字母"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),10,listView);     new MainListViewItem(tr("形态学开操作"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),11,listView);     new MainListViewItem(tr("形态学闭操作"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),12,listView);     new MainListViewItem(tr("形态学梯度(基本梯度)"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),13,listView);     new MainListViewItem(tr("顶帽操作"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),14,listView);     new MainListViewItem(tr("黑帽操作"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),15,listView);     new MainListViewItem(tr("小案例:提取提取项目中的字母或者直线"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),16,listView);     new MainListViewItem(tr("上采样"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),17,listView);     new MainListViewItem(tr("降采样"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),18,listView);     new MainListViewItem(tr("高斯不同"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),19,listView);     new MainListViewItem(tr("使用自定义卷积核filter2D"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),20,listView);     new MainListViewItem(tr("合并rebort及Sobel的x方向梯度和y方向的梯度"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),21,listView);     new MainListViewItem(tr("填充图像边缘"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),22,listView);     new MainListViewItem(tr("使用Sobel和Scharr计算图形梯度"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),23,listView);     new MainListViewItem(tr("使用拉普拉斯算子显示梯度图像"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),24,listView);     new MainListViewItem(tr("边缘检测"),QIcon(":res/icon_main_list.png"),QIcon(":res/icon_main_list.png"),25,listView);  //    connect(listView,&MainListView::itemClicked,listView,&MainListView::onMainItemClick); }//最后一步:创建ListView,然后运行就行了  createListView(this);3、图片演示

3月21日复盘人工智能,二波来了前几天市场不好,导致本人情绪也不好,复盘也没有什么可说的,市场没情绪,我觉得要不空仓,要不卧倒我是卧倒的那个!今天市场迎来转折,情绪来了,但今天是缩量的,东财如果上午不宕机,那再增甘肃省妇联赴天津市开展招商引资和东西部协作对接中国甘肃网3月21日讯(本网记者何星丑)近日,甘肃省妇联组成专门工作组,带领天水市平凉市庆阳市甘南州和部分县区妇联以及22名女企业家代表赴天津市对接招商引资及东西部协作工作。在津期印度女人为什么戴鼻环?除了好看还是身份的象征长期以来,装饰过的鼻子在印度一直被视为美丽的对象,款式与其意义一样多种多样对很多人来说穿鼻孔意味着叛逆不羁。而在印度,鼻子穿孔与穿耳洞一样平常,是女性成熟优雅的象征。最早的鼻孔仪式连续赢东西部前2!湖人,你不冤!康利焕发新春,真的不比保罗差20222023赛季NBA常规赛正在如火如荼的进行中,3月21日比赛结束后,来看下今日赛况以及西部最新排名森林狼以140134击败尼克斯,勇士以121108击败火箭,独行侠1081湖人非高顺位选秀权选中9个新星居然都成才啦湖人选秀团队真牛头条创作挑战赛湖人队的NBA选秀能力还是很厉害的,除了三个榜眼签选中了拉塞尔,英格拉姆,鲍尔之外,湖人队还利用其他排位不是很好的签位,选中了很多潜力新秀,基本上每年湖人选中的新秀都省运最前沿足球项目青少年组男子甲组决赛圆满落幕3月19日,河北省第十六届运动会足球项目青少年组男子甲组决赛在在峰峰矿区城市运动公园圆满落下帷幕。经过5个比赛日,共计20场激烈角逐,唐山市代表队最终夺得第一名,沧州市代表队和邯郸广东三家足球俱乐部完成债务清欠,有望准入新赛季20日下午,中国足协公布了第二批完成债务清欠俱乐部的名单。在这份名单中,此前未能进入第一批名单的三家广东职业足球俱乐部深圳市足球俱乐部广州城足球俱乐部以及广州足球俱乐部均在其中。中神农架,好山好水出好茶湖北日报全媒记者刘汉泽通讯员易先骏吴冠宇茶,是中华民族的国饮,茶文化源远流长。而这片神奇的东方树叶,正式从神农架开始。茶经中称茶之为饮发乎神农氏。神农本草经记载神农采药为民疗疾,日重庆合川涞滩古镇引游人3月19日,游客在重庆合川涞滩古镇参观游览。新华社记者刘潺摄位于重庆市合川区的涞滩古镇是首批中国历史文化名镇中国十大古镇之一。近年来,涞滩古镇依托成渝地区双城经济圈建设的机遇,积极LPL十周年十大选手票选结束第一西卡,小虎第十!近日,官方推出的LPL十周年十大选手评选活动吸引了海量LOL玩家的关注,诸多小伙伴们投票选出自己认为可以入选十大榜单的选手。目前,微博端的投票已经结束,具体排名如下1。SICCA5时尚界最敢玩的设计师离开Moschino,任内作品屡屡引人发问这就是时尚?界面新闻记者陈奇锐界面新闻编辑楼婍沁又有时尚品牌和设计师之间的长情故事完结。北京时间3月20日,意大利时尚品牌Moschino宣布创意总监JeremyScott即将离任。这距离他执
出现心脾两虚的症状应该怎么办?立冬之后,寒潮来袭,人们可以明显感觉到温度的下降。一些朋友头晕眼花体倦乏力失眠多梦等症状也开始出现。那么,我们应当如何养生呢?这些症状又该如何缓解呢?什么是心脾两虚?脾主思,思虑过神农本草经中的芡实,可以消除尿蛋白,中医告诉你原理及用法大家好,我是鸿玉中医,今天我们分享神农本草经里面的第9味药,叫做芡实。芡实神农本草经芡实,气味甘平涩,无毒,主湿痹,腰脊膝痛,补中除暴疾,益精气强志,令耳目聪明,久服轻身不饥,耐老脉通一寸,寿延一年,张仲景独创通脉方,通脉,通络,通全身脉通一寸,寿延一年!大家好,我是沈医生,今天给大家介绍一个张仲景独创的通脉方,通脉,通络,通全身,从上到下疏通全身血脉,经络,使气血流畅,人体健康,远离各种疼痛!有关节炎,肩周炎,调查药食同源也有误区?进补不能滥补,滥用或可伤身北京日报客户端记者宗媛媛美编宋溪俗话说,冬令进补,来年打虎。进入冬季,不少中老年人喜欢买些中药材在家煲汤煮茶,商家也打着养生旗号,推出五花八门的应季补品,声称可以补气养血护肝清肺,年历腕表该如何选择?6款经典的年历腕表值得一看日历手表种类繁多。其中大部分以31天为周期,需要定期调整(一年5次)以确保显示正确的日期。年历会自动调整指示的日期,机械配置为显示不同的月份长度,并且每年只需手动更正一次(在最坏的早上刚刮了胡子,隔早就长出来了,胡须长太快意味着什么?导语在现如今的日常生活里,走在大街上很少能够见到男性朋友会留起满脸的胡子或者是山羊胡,大部分的男性朋友都会把自己脸上的胡子刮得干干净净,这样才显得自己更有魅力,也有干干净净的感觉。头发多久洗一次最好?是每天洗头还是两三天洗头?头发是我们身体上最常见的一部分毛发它跟身体其他部分的毛发,不一样的地方在于头发可以无限长长,而且剪了之后他依旧会茁壮成长,很多人做了实验,如果把自己的头发全部剃光,多久才能长出来,胶原蛋白真有那么神奇吗人们习惯用脸上满满的胶原蛋白来形容肌肤的年轻状态。从科学角度看,胶原蛋白具有滋润保湿消除皱纹的作用。近年来,随着胶原蛋白生产技术的不断提高,胶原蛋白也成为抗衰老产品中的明星成分。同奇葩班主任的一次发飙,不料却殃及池鱼阿秋是我们高三时的班主任,一个快50岁的小老头,他自许是一个有文化有品位的知识分子,但在大家的眼中却不这样。阿秋给人的第一印象永远是整洁,梳得整整齐齐的头发和一身整洁干净的衣服。也C罗球迷对我来说就是一切,我接受这次采访就是想说出想法皮尔斯摩根在太阳报亲自放出了C罗专访的更多内容。关于利物浦球迷支持他我从没想过会看到这种情况。指利物浦球迷支持他,当时他的孩子不幸夭折。他和乔治娜还收到了来自王室的私人唁电,这让他莲子除了治疗心悸失眠涩精止遗,还有很多的作用,你知道哪些?大家好,我是鸿玉中医,今天我们分享神农本草经里面的第10味药,叫做莲实。莲子神农本草经莲实,气味甘平无毒,主补中,养神,益气力,除百病,久服轻身耐老,不饥延年。莲实,就是植物莲的种