热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QT中tableWidget批量添加item,添加图片并居中

QT中tableWidget批量添加item,添加图片并居中 有这样一个比起奇怪的需求,比较难描述,先看最终效果吧! 这里用到了QtableW
QT中tableWidget批量添加item,添加图片并居中

有这样一个比起奇怪的需求,比较难描述,先看最终效果吧!
在这里插入图片描述
这里用到了QtableWidget表格,手动一个一个放太费劲了。
还有图片资源,还需要居中,确实研究了几个小时。还是在这记录一下。
直接上代码吧!都有注解的。

QPixmap Pic_R &#61; QPixmap(":/back/PIC/redcircle.png");//添加红色的图片Pic_R &#61; Pic_R.scaled(40,40);//设置图片的大小QPixmap Pic_G &#61; QPixmap(":/back/PIC/greencircle.png");//添加绿色的图片Pic_G &#61; Pic_G.scaled(40,40);//设置图片的大小//创建DI表格128路ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//禁止修改ui->tableWidget->verticalHeader()->setDefaultSectionSize(50);//行高50ui->tableWidget->horizontalHeader()->setDefaultSectionSize(110);//列宽110ui->tableWidget->verticalHeader()->setVisible(false);//不显示行标题ui->tableWidget->horizontalHeader()->setVisible(false);//不显示列标题ui->tableWidget->setColumnCount(16);//创建16行ui->tableWidget->setRowCount(16);//创建16列for(int i&#61;0;i<16;i&#43;&#43;)//赋予数据{for(int j&#61;0;j<16;j&#43;&#61;2)//两列一组循环{QTableWidgetItem *name&#61;new QTableWidgetItem();//定义一个表格元素的类QString DI_Number &#61; "通道"&#43;QString::number(i*8&#43;j/2&#43;1);//定义一个字符串 要添加会变化的字符name->setText(DI_Number);//赋予到表格元素中ui->tableWidget->setItem(i,j,name);//显示到N行N列ui->tableWidget->item(i,j)->setTextAlignment(Qt::AlignCenter);//设置文字居中ui->tableWidget->item(i,j)->setBackground(QBrush(QColor(204,204,204)));//改变单元格颜色QLabel *Label_LED &#61; new QLabel();//定义一个QLabel类Label_LED->setMaximumSize(110,50);//设置的大小&#xff0c;就是单元格的大小if(DI_Table[i*8&#43;j/2])//判断这一个是要红色还是绿色Label_LED->setPixmap(Pic_G);//绿色的elseLabel_LED->setPixmap(Pic_R);//红色的Label_LED->setAlignment(Qt::AlignCenter);//设置在QLabel中居中ui->tableWidget->setCellWidget(i,j&#43;1,Label_LED);//显示在N行N列}}

补充一下&#xff0c;之前一直走弯路&#xff0c;掉进去的几个坑。

  1. 图片居中的原理是&#xff1a;让图片类QPixmap固定大小&#xff0c;在QLabel里居中。如果不规定图片大小&#xff0c;会按照资源的大小显示&#xff0c;效果就是这样的了。
    在这里插入图片描述
  2. 居中显示要使用Qt::AlignCenter&#xff0c;意思是水平垂直都居中。
    在底层代码里是这个意思 AlignCenter &#61; AlignVCenter | AlignHCenter
  3. 其实Label_LED->setMaximumSize(110,50);是不需要的
    不设置Label的大小&#xff0c;也是一样的效果。

推荐阅读
author-avatar
阵风阿斯顿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有