0


【QT学习】QListWidget实现鼠标进入某个item图标自动放大

  • 📢欢迎各位读者:点赞 👍 收藏 ⭐留言 📝
  • 📢博客主页:https://blog.csdn.net/qq_59134387😀
  • 📢原创不易,转载请标明出处;如有错误,敬请指正批评!💦
  • 📢我不去想是否能够成功,既然选择了远方,便只顾风雨兼程!✨

文章目录


前言

   本文主要介绍,QListWidget界面在

IconMode(图标模式)

的显示下,当鼠标进入到其中某个item的范围时,该item图标

自动放大


一、实现效果

  • 编码后的实现效果如下,可以看到我们将鼠标移至item时,该item图片自动放大,移开时自动缩小

在这里插入图片描述

二、具体流程

  • 1.创建QListWidget
  • 2.创建item并添加到界面中
  • 3.设置鼠标追踪(重要)
  • 4.设置连接函数(通过鼠标移动触发槽函数)
  • 5.在槽函数中新建图片放大窗口(去掉标题栏)
  • 6.设置事件过滤器
  • 7.在新建窗口中设置图片并显示

三、核心代码

1.界面构造函数

**

构造函数作用

:创建QListWidget界面,加载item图片并设置连接函数,具体代码如下。**


mainWin::mainWin(QWidget *parent):QWidget(parent){//设置主界面窗口大小this->setFixedSize(1200,747);//创建QListWidget界面并初始化
    QListWidget *videowins =newQListWidget(this);//创建QListWidget界面
    videowins->setGeometry(180,90,1000,650);//设置界面大小及位置
    videowins->setViewMode(QListView::IconMode);//设置图标模式显示
    videowins->setMovement(QListView::Static);//设置item不可移动
    videowins->setResizeMode(QListView::Adjust);//设置item自适应窗口大小
    videowins->setIconSize(QSize(300,200));//设置图标大小            //创建QListWidgetItem
    QListWidgetItem *newitem1 =newQListWidgetItem(QIcon(QPixmap("Pic1.png")),"图片1");
    QListWidgetItem *newitem2 =newQListWidgetItem(QIcon(QPixmap("Pic2.png")),"图片2");
    QListWidgetItem *newitem3 =newQListWidgetItem(QIcon(QPixmap("Pic3.png")),"图片3");//将item添加到QListWidget中
    videowins->addItem(newitem1);
    videowins->addItem(newitem2);
    videowins->addItem(newitem3);//设置鼠标追踪(重要),否则无法触发槽函数
    videowins->setMouseTracking(true);//设置连接函数connect(videowins,SIGNAL(itemEntered(QListWidgetItem*)),this,SLOT(itemEnteredSLOT(QListWidgetItem*)));}

2.信号触发槽函数

**

槽函数作用

:当鼠标移到某个item图标上时,触发槽函数自动放大该item图标。**

void mainWin::itemEnteredSLOT(QListWidgetItem *item){//创建图片放大窗口
    videoTextWin *videoText =newvideoTextWin();//设置新建窗口大小
    videoText->resize(300,400);//在新建窗口内创建标签用来存储放大后的图片
    QLabel *label =newQLabel(videoText);//设置标签大小与窗口大小相同
    label->setGeometry(0,0,300,400);//从文件中加载图片到标签
    label->setPixmap("item->text()+".jpg");//设置图片自适应窗口大小
    label->setScaledContents(true);//将新建窗口置于所有窗口顶部
    videoText->setWindowFlags(Qt::WindowStaysOnBottomHint);//隐藏新建窗口的标题栏
    videoText->setWindowFlags(Qt::FramelessWindowHint);//显示新建窗口
    videoText->show();}

3.事件过滤器函数

**

事件过滤器作用

:当鼠标从放大图标上移开时,该item图标自动缩小。**

bool videoTextWin::eventFilter(QObject *watched, QEvent *event){//当鼠标移开图标放大窗口if(event->type()== QEvent::Leave){//隐藏图标放大窗口,并结束函数
        videoText->hide();returntrue;}//鼠标没有移开当前窗口,函数递归重复执行returnQWidget::eventFilter(watched, event);}

总结

   以上就是【QT学习】QListWidget实现鼠标进入某个item图标自动放大的所有内容,希望大家阅读后都能有所收获!原创不易,转载请标明出处,若文章出现有误之处,欢迎读者留言指正批评!

在这里插入图片描述

标签: qt 学习 ui

本文转载自: https://blog.csdn.net/qq_59134387/article/details/126909176
版权归原作者 孤生i 所有, 如有侵权,请联系我们删除。

“【QT学习】QListWidget实现鼠标进入某个item图标自动放大”的评论:

还没有评论