#include "tab_basemsg.h"
#include "ui_tab_basemsg.h"
#include "src/util/basemsgadddialog.h"
#include <QTableWidget>
#include <QFileDialog>
#include <QMessageBox>
#include <QDebug>
#define WD_BASE_WIDTH 780
#define WD_BASE_HEIGHT 440
tab_basemsg::tab_basemsg(QWidget *parent) :
QWidget(parent),
ui(new Ui::tab_basemsg)
{
ui->setupUi(this);
//tab_basemsg::resize(800,500);
//ui->tableWidget->resize(WD_BASE_WIDTH, WD_BASE_HEIGHT);
init();
//读取json数据,显示表格信息
ShowTableContent();
basemsgDialg = new basemsgaddDialog(this);
connect(basemsgDialg,&basemsgaddDialog::refreshbasemsg,this,[=](int flag,const stBasemsg& basemsg){
qDebug()<< __LINE__ << "refreshbasemsg";
if(flag==0){
comfun.insertjsondata(basemsg,BASEMSG_JSONPATH);
}else{
comfun.updatejsondata(basemsg,BASEMSG_JSONPATH);
}
ShowTableContent();//重新更新表格数据
});
pingdlg = new pingDialog(this);
}
tab_basemsg::~tab_basemsg()
{
delete ui;
delete basemsgDialg;
delete pingdlg;
}
void tab_basemsg::init(){
//如果想调顺序,先调枚举TEnBaseMsgHeadtype中的值顺序,再调这里的顺序
m_all_fieldsHeadname[HEAD_BASEMSG_ID]="序号";
m_all_fieldsHeadname[HEAD_BASEMSG_CODE]="编码";
m_all_fieldsHeadname[HEAD_BASEMSG_NAME]="名称";
m_all_fieldsHeadname[HEAD_BASEMSG_BRAND]="品牌";
m_all_fieldsHeadname[HEAD_BASEMSG_TYPE]="类型";
m_all_fieldsHeadname[HEAD_BASEMSG_IP]="IP地址";
m_all_fieldsHeadname[HEAD_BASEMSG_UPDATE]="更新时间";
m_all_fieldsHeadname[HEAD_BASEMSG_OPT]="操作";
QString fieldsset;
AppConfig::Get().readIni(QString(BASE_FILE_NAME), QString("MENU_CONF"),QString("field"),fieldsset);
qDebug()<< __LINE__ << "fieldsset:"<<fieldsset;
m_fieldslist.clear();
m_fieldslist=fieldsset.split("|");
m_cur_fieldsHeadname.clear();
int index=0;
for(int num=0;num<m_fieldslist.size();num++){
if(m_fieldslist[num]=="1"){
m_cur_fieldsHeadname[index]=m_all_fieldsHeadname[num];
index++;
}
}
QStringList tablelHeader;
for(int i=0;i<m_cur_fieldsHeadname.size();i++) {
tablelHeader << m_cur_fieldsHeadname[i];
}
qDebug() << __LINE__ << __FUNCTION__<<tablelHeader;
//tablelHeader<<"序号"<<"编码"<<"名称"<<"品牌"<<"类型"<<"IP地址"<<"更新时间"<<"操作";
ui->tableWidget->setColumnCount(tablelHeader.size()); // 设置列数
ui->tableWidget->setHorizontalHeaderLabels(tablelHeader);
ui->tableWidget->verticalHeader()->setVisible(false);
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);// 设置选择行为整行选择
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//单元格不可编辑
ui->tableWidget->setStyleSheet("QTableView::item:selected { color:#000000;background-color: #ADD8E6; }");//设置选择后的颜色
ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);//设置右键菜单功能
connect(ui->tableWidget, &QTableWidget::customContextMenuRequested, this, &tab_basemsg::tableWidget_MenuRequested);
//connect(ui->tableWidget, &QTableWidget::customContextMenuRequested, this, &tab_basemsg::on_tableWidget_customContextMenuRequested);
//设置表格表头
for (int i = 0; i < tablelHeader.size(); ++i) {
QTableWidgetItem* headerItem = new QTableWidgetItem(tablelHeader.at(i));
QFont font = headerItem->font();
// font.setBold(true); // 设置字体加粗
headerItem->setFont(font);
ui->tableWidget->setHorizontalHeaderItem(i, headerItem);
if(tablelHeader[i]=="序号" || tablelHeader[i]=="品牌" || tablelHeader[i]=="类型" || tablelHeader[i]=="更新时间"|| tablelHeader[i]=="操作")
{
ui->tableWidget->horizontalHeader()->setSectionResizeMode(i,QHeaderView::Fixed);
int width = 40;//默认宽度
if(tablelHeader[i]=="更新时间") width=160;
else if(tablelHeader[i]=="品牌"||tablelHeader[i]=="类型") width=80;
else if(tablelHeader[i]=="操作") width=80;
ui->tableWidget->setColumnWidth(i,width);
}
}
QString headerStyleSheet = "QHeaderView::section { background-color: rgb(242,242,242); color: #333;padding-top:3px;padding-bottom:3px; }";
ui->tableWidget->horizontalHeader()->setStyleSheet(headerStyleSheet);
ui->tableWidget->setWordWrap(false);
}
void tab_basemsg::reShowTableContent(){
qDebug() << __LINE__ << __FUNCTION__;
init();
//读取json数据,显示表格信息
ShowTableContent();
}
void tab_basemsg::ShowTableContent(){
//qDebug() << __LINE__ << __FUNCTION__;
ui->tableWidget->setRowCount(0);//清空表格
comfun.readjsondata(m_basemsgmap,BASEMSG_JSONPATH);
int id = 1;
// 使用迭代器遍历map
for (auto it = m_basemsgmap.begin(); it != m_basemsgmap.end(); ++it,id++) {
QString code=it.key();
stBasemsg st_basemsg=it.value();
QStringList rowData;
int index=0;
for(int num=0;num<m_cur_fieldsHeadname.size();num++,index++){
if(m_cur_fieldsHeadname[num]==m_all_fieldsHeadname[HEAD_BASEMSG_ID]){
rowData.insert(index,QString::number(id));
}else if(m_cur_fieldsHeadname[num]==m_all_fieldsHeadname[HEAD_BASEMSG_CODE]){
rowData.insert(index,st_basemsg.code);
}else if(m_cur_fieldsHeadname[num]==m_all_fieldsHeadname[HEAD_BASEMSG_NAME]){
rowData.insert(index,st_basemsg.name);
}else if(m_cur_fieldsHeadname[num]==m_all_fieldsHeadname[HEAD_BASEMSG_BRAND]){
rowData.insert(index,st_basemsg.brand);
}else if(m_cur_fieldsHeadname[num]==m_all_fieldsHeadname[HEAD_BASEMSG_TYPE]){
rowData.insert(index,st_basemsg.type_name);
}else if(m_cur_fieldsHeadname[num]==m_all_fieldsHeadname[HEAD_BASEMSG_IP]){
rowData.insert(index,st_basemsg.Ip);
}else if(m_cur_fieldsHeadname[num]==m_all_fieldsHeadname[HEAD_BASEMSG_UPDATE]){
qint64 uptime = st_basemsg.updatetime;
rowData.insert(index,comfun.qint64todatestring(uptime));
}else if(m_cur_fieldsHeadname[num]==m_all_fieldsHeadname[HEAD_BASEMSG_OPT]){
rowData.insert(index,"");
}
}
//rowData << QString::number(index) << code << st_basemsg.name <<st_basemsg.brand <<st_basemsg.type_name <<st_basemsg.updatetime <<"";
renderTable(rowData);
}
}
void tab_basemsg::renderTable(const QStringList& rowData){
int row = ui->tableWidget->rowCount();
ui->tableWidget->insertRow(row);
for (int column = 0; column < rowData.size(); ++column) {
QTableWidgetItem* item = new QTableWidgetItem(rowData.at(column));
item->setTextAlignment(Qt::AlignCenter);
ui->tableWidget->setItem(row, column, item);
QTableWidgetItem* headerItem = ui->tableWidget->horizontalHeaderItem(column);
QString headerText = headerItem ? headerItem->text() : QString();
if (headerText == "操作") {
//编辑按钮
QPushButton* edit = new QPushButton();
edit->setIcon(QIcon(":/index/img/edit.png"));
edit->setIconSize(QSize(24, 24));
edit->setStyleSheet("QPushButton { border: none; }");
edit->setCursor(Qt::PointingHandCursor);
//删除按钮
QPushButton* deleteButton = new QPushButton();
deleteButton->setIcon(QIcon(":/index/img/delete.png"));
deleteButton->setIconSize(QSize(24, 24));
deleteButton->setStyleSh
![avatar](https://profile-avatar.csdnimg.cn/eaa993c7fe7b4fedaf5e7ad34e3bf660_liangyuna8787.jpg!1)
扶尔魔ocy
- 粉丝: 1177
- 资源: 13
最新资源
- 智慧社区解决方案-6PPT(25页).pptx
- 40页-智慧社区一体化建设方案(重庆).pdf
- 智慧社区人脸识别整体解决方案Word(20页).doc
- 41页-智慧社区解决方案.pdf
- 智慧社区理念与解决方案介绍PPT(22页).pptx
- Springboot+vue的智能家居系统(有报告),Javaee项目,springboot vue前后端分离项目
- 智慧社区解决方案-10Word(253页).docx
- 智慧社区解决方案——智能安防建设解决方案PPT(69页).pptx
- Linux环境中Alist服务端安装与配置方法全解析
- Linux系统中JDK安装与环境配置教程
- 西门子PLC 200 Smart恒压供水编程之旅:昆仑通态触摸屏与ABB变频器参数设置实战学习视频分享,西门子PLC 200SMART恒压供水编程实战:昆仑通态触摸屏与ABB变频器参数设置学习指南及上
- 方钢管混凝土构件火灾、撞击与爆炸耦合模型解析视频教程:ABAQUS CAE+ODB应用实战,方钢管混凝土构件火灾、撞击与爆炸耦合模型解析教程:ABAQUS CAE+ODB应用详解,方钢管混凝土构件火灾
- 深度学习算法在噬菌体特异性蛋白质预测中的应用:完整代码实现与数据集分析,深度学习算法在噬菌体特异性蛋白质预测中的应用:完整代码实现与数据集分析,使用深度学习方法预测噬菌体特异性蛋白质完整代码实现,含数
- 基于国际大厂ADS1242的24bit二阶sigma delta ADC技术,应用于BIM的人体阻抗测量前端AFE芯片,采用smic55nm工艺,真实仿真非虚拟库实现 ,国际大厂ADS1242 AFE
- StarFree开源的简约唯美的论坛源码
- 基于布莱克曼窗的99阶FIR滤波器设计,实现50MHz采样频率下的1.5MHz通带滤波,图例展示滤波效果,Quartus仿真下的FIR滤波器设计:采用布莱克曼窗,99阶,50MHz采样频率与1.5MH
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)