#include "thresholdlistwidget.h" #include "ui_thresholdlistwidget.h" #include "pdu_ctrl.h" #include ThresholdListWidget::ThresholdListWidget(QWidget *parent) : QWidget(parent), ui(new Ui::ThresholdListWidget) { ui->setupUi(this); InitUI(); } ThresholdListWidget::~ThresholdListWidget() { delete ui; } void ThresholdListWidget::UpdateTreshold() { //ReadSqlData(); updateTablewidget(); qDebug()<<"UpdateTreshold" ; } void ThresholdListWidget::ReadSqlData() { //SELECT* FROM Table_PowerManage WHERE product_ch_addr_id=%d and product_ch_addr_ch_id=%d; QSqlQuery query(pdu_Ctrl::instance()->getDB()); QString strSQl=( "SELECT product_ch_id, product_ch_name, product_ch_type,product_vol_u_enable, product_vol_u_threshold, product_vol_l_enable, product_vol_l_threshold,\ product_cur_u_enable,product_cur_u_threshold, product_pwr_u_enable,product_pwr_u_threshold,product_pwrcon_u_enable,product_pwrcon_u_threshold,\ product_ch_addr_id,product_ch_addr_ch_id\ FROM Table_PowerManage\ ORDER BY product_ch_addr_id,product_ch_addr_ch_id" ); if (!query.exec(strSQl)) { //QMessageBox::warning(this, "Query Error", query.lastError().text()); return; } //ClearList(); while (query.next()) { CHOverMG pData; pData.nCHID = query.value(0).toInt(); pData.strName = query.value(1).toString(); pData.nCHType = query.value(2).toInt(); pData.OverData.product_vol_upper_enable=query.value(3).toInt(); pData.OverData.product_vol_upper_threshold=query.value(4).toInt(); pData.OverData.product_vol_lower_enable=query.value(5).toInt(); pData.OverData.product_vol_lower_threshold=query.value(6).toInt(); pData.OverData.product_cur_upper_enable=query.value(7).toInt(); pData.OverData.product_cur_upper_threshold=query.value(8).toInt(); pData.OverData.product_pwr_upper_enable=query.value(9).toInt(); pData.OverData.product_pwr_upper_threshold=query.value(10).toInt(); pData.OverData.product_pwrcon_upper_enable=query.value(11).toInt(); pData.OverData.product_pwrcon_upper_threshold=query.value(12).toInt(); pData.nAddrID=query.value(13).toInt(); pData.nAddrCHID=query.value(14).toInt(); pdu_Ctrl::instance()->AddOverMG(pData); } } void ThresholdListWidget::updateTablewidget() { ClearList(); // 初始化表格内容 auto overMG=pdu_Ctrl::instance()->getOverMG(); if(overMG.isEmpty()) { qDebug()<<"overMG is Empty" ; } for(auto iters= overMG.begin(); iters!= overMG.end(); iters++) { if(iters== overMG.begin()) { continue; } for(auto iter=iters.value().begin();iter!=iters.value().end();iter++) { // 初始化阈值列(带两位小数格式) int nRow=AddRowData(iter.value().nCHID,iter.value().strName,&iter.value().OverData); auto pWarningData=pdu_Ctrl::instance()->getWarningData(iter.value().nAddrID,iter.value().nAddrCHID); if (pWarningData) { checkThresholds(nRow+1,pWarningData); }else { qDebug()<<"NO_ReadWarning " <tableWidget->setColumnCount(6); ui->tableWidget->setHorizontalHeaderLabels(headers); // QScroller::grabGesture(ui->tableWidget->viewport(), QScroller::TouchGesture); // QScrollerProperties properties = QScroller::scroller(ui->tableWidget)->scrollerProperties(); // properties.setScrollMetric(QScrollerProperties::DragVelocitySmoothingFactor, 0.6); // 惯性系数 // properties.setScrollMetric(QScrollerProperties::SnapPositionRatio, 0.2); // 弹性效果 // ui->tableWidget->viewport()->setAttribute(Qt::WA_AcceptTouchEvents); // 启用触控事件 // 设置自动调整列宽 ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); ui->tableWidget->verticalHeader()->setVisible(false); ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection); ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); } int ThresholdListWidget::AddRowData(int nChID,QString strName,GlobalOverManager*pData) { if(!pData)return -1; int nMaxRow=ui->tableWidget->rowCount(); QTableWidgetItem *channelItem = new QTableWidgetItem(strName); channelItem->setFlags(channelItem->flags() ^ Qt::ItemIsEditable); ui->tableWidget->insertRow(nMaxRow); ui->tableWidget->setItem(nMaxRow, 0, channelItem); // 初始化阈值列 /*if(pData->product_vol_upper_threshold!=0 ||pData->product_vol_lower_threshold!=0 ||pData->product_cur_upper_threshold!=0 ||pData->product_pwr_upper_threshold!=0 ||pData->product_pwrcon_upper_threshold!=0){qDebug()<<"HaveData "<< nMaxRow; }*/ ui->tableWidget->setItem(nMaxRow, 1, new QTableWidgetItem(QString::number(pData->product_vol_upper_threshold,'f',2))); ui->tableWidget->setItem(nMaxRow, 2, new QTableWidgetItem(QString::number(pData->product_vol_lower_threshold,'f',2))); ui->tableWidget->setItem(nMaxRow, 3, new QTableWidgetItem(QString::number(pData->product_cur_upper_threshold,'f',2))); ui->tableWidget->setItem(nMaxRow, 4, new QTableWidgetItem(QString::number(pData->product_pwr_upper_threshold,'f',2))); ui->tableWidget->setItem(nMaxRow, 5, new QTableWidgetItem(QString::number(pData->product_pwrcon_upper_threshold,'f',2))); return nMaxRow; } void ThresholdListWidget::ClearList() { ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); } void ThresholdListWidget::checkThresholds(int nRow,PowerWarningInfo* pWarning) { QColor color = Qt::green; int nRowCount=ui->tableWidget->rowCount(); if(nRow>=nRowCount||nRow<0) { return; } // 电压检测 if(pWarning->w_voltage_up) { color = Qt::blue;// ui->tableWidget->item(nRow,1)->setForeground(color); } else if(pWarning->w_voltage_down) { color = Qt::blue; ui->tableWidget->item(nRow,2)->setForeground(color); }else { color = Qt::green; ui->tableWidget->item(nRow,1)->setForeground(color); ui->tableWidget->item(nRow,2)->setForeground(color); } // 电流检测 if(pWarning->w_current) { color = Qt::blue; }else { color = Qt::green; } ui->tableWidget->item(nRow,3)->setForeground(color); // 功率检测 if(pWarning->w_power) { color = Qt::blue; }else { color = Qt::green; } ui->tableWidget->item(nRow,4)->setForeground(color); // 电量检测 if(pWarning->w_consumption) { color = Qt::blue; }else { color = Qt::green; } ui->tableWidget->item(nRow,5)->setForeground(color); }