QT中QListWidget实现QListWidgetItem图片和文字居中

说明

在使用QT开发软件的过程中,很多时候使用QListWidget来实现列表项的功能,比如MS系统的功能模块菜单,如下面2张图所示,其中第一张图是带文字和图标的列表项,第二张图是纯图标的模式,在最近开发的平台客户端的某个功能模块都用上了。
图1
在这里插入图片描述

列表项实现过程

在实现的过程中,参考了另外一位博主的博客( 利用QListWidget实现简单的播放器界面.),所以我这里就没有过多的介绍如何实现的了,大家看了那边博客就能实现QListWeiget项图标居中的样式了,写这篇博客就是为了大家能链接过去,可能有时候搜索不到那片博客。实现图标居中也是利用了最关键的函数:

`void  QListWidget::setItemWidget(QListWidgetItem * item, QWidget * widget);`

这个函数的主要作用就是将某个widget赋予给其中的一项(这样我们就可以将一项设置为我们想要的内容,毕竟widget是一个容器,啥都能装,还能在里面布局),而使用QListWidget的addItem函数一般就是仅仅添加项目的标题,其中添加QListWidget的一项是一个QListWidgetItem类,QListWidgetItem类使用以下函数可以设置图标,但是设置图标默认是居左的,并没有类似 setTextAlignment的方法使文字居中的方法。

void setIcon(const QIcon &icon);

相信说到这,大家也去看了以上实现播放器的方法,也能够实现图标居中或者任意的位置,只要我们对setItemWidget方法的widget布局,让其居中就能实现图标居中,如果觉得链接的博客的代码有点多,以下我就模仿写了最核心的一段代码,将这段代码随便拷贝到你们的电脑运行就可以,图片路径换上就可以了,另外weight布局可以按照自己的需要进行布局。

void MainWindow::init()//初始化元素
{
  QWidget *itemWidget = new QWidget(ui->listWidget); 
  QGridLayout *itemLayout = new QGridLayout;    
  QHBoxLayout *itemContentLayout = new QHBoxLayout;    
  QLabel *lblPicture = new QLabel("");    
  QPixmap icon(":/images/消防.png");   
  lblPicture->setPixmap(icon);  
  QLabel *lblContent = new QLabel("模块名称");   
  itemContentLayout->addWidget(lblPicture,1);//图片控件占1列
  itemContentLayout->addWidget(lblContent,4);//文字占4列   
  itemLayout->addWidget(new QLabel(),1,1,1,5);   
  itemLayout->addLayout(itemContentLayout,1,6,1,10);    
  itemLayout->addWidget(new QLabel(),1,17,1,7);    
  itemWidget->setLayout(itemLayout);   
  QListWidgetItem *item = new QListWidgetItem(ui->listWidget);   
  item->setSizeHint(QSize(40,40));       
  ui->listWidget->setItemWidget(item,itemWidget);
}

运行结果如下:
在这里插入图片描述

题外话

既然有setItemWidget这个函数,那么当然对应的ItemWidget函数,那么是不是可以通过这个函数获取我们存储每一项对应的Widget,然后对其中的元素进行操作,是不是就可以实现对应元素的美化功能呀,比如按下时,图标的切换,背景的切换等
噗~~~ 这个一项一项的离我们最开始给的图还有点距离呀,如果要实现说明那2张图的样式,还有很多工作需要做,比如布局的使用,标题栏的美化,使用QT进行界面开发,还是比MFC容易多了,毕竟QT提供了很多现成的界面库供我们使用。
PS:我也是刚刚学习QT不久,借学习的机会顺便写了一个简单的消防模块(主要功能有文件的上传与下载,短信功能,消息提醒,视频播放等子功能),以下是主界面截图,花了差不多30多个工作日呢,忏愧呀,如果你是一位新手,可以留言共同谈论QT的相关问题呀
在这里插入图片描述

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值