- 📢欢迎各位读者:点赞 👍 收藏 ⭐留言 📝
- 📢博客主页: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图标自动放大的所有内容,希望大家阅读后都能有所收获!原创不易,转载请标明出处,若文章出现有误之处,欢迎读者留言指正批评!
版权归原作者 孤生i 所有, 如有侵权,请联系我们删除。