#include "ch_widget.h" #include "ui_ch_widget.h" #include #define RunStatus "#ch_Widget{border: 2px solid #00FF00;background-color: #FFFFFF;border-radius: 15px;}QLabel { color: #00FF00; }" #define StopStatus "#ch_Widget{border: 2px solid #000000;background-color: #FFFFFF;border-radius: 15px;}QLabel { color: #000000; }" #define WarningStatus "#ch_Widget{border: 2px solid #0000FF;background-color: #FFFFFF;border-radius: 15px;}QLabel { color: #0000FF; }" ch_Widget::ch_Widget(QWidget *parent) : QWidget(parent), ui(new Ui::ch_Widget), m_pCHData(nullptr), m_pChWarning(nullptr) { ui->setupUi(this); } ch_Widget::~ch_Widget() { delete ui; } void ch_Widget::setDataCHP(int nIndex, PowerInfo *pdata,PowerWarningInfo* pWarn) { if(pdata&&pWarn) { m_nIndex=nIndex; m_pCHData=pdata; m_pChWarning=pWarn; UpdateData(); } } void ch_Widget::UpdateData() { if(m_pCHData) { ui->label_CH->setText("CH"+QString::number(m_nIndex)); ui->label_V->setText(QString::number(m_pCHData->voltage, 'f', 2)); ui->label_I->setText(QString::number(m_pCHData->current, 'f', 2)); ui->label_P->setText(QString::number(m_pCHData->power,'f', 2)); ui->label_W->setText(QString::number(m_pCHData->consumption, 'f', 2)); //if(m_pCHData->status!=nStatus) { nStatus=m_pCHData->status; if(nStatus==1) { if(m_pChWarning&&(m_pChWarning->w_voltage_up||m_pChWarning->w_voltage_down||m_pChWarning->w_current||m_pChWarning->w_power||m_pChWarning->w_consumption)) { this->setStyleSheet(WarningStatus); }else { this->setStyleSheet(RunStatus); } /* if(m_pChWarning) { if(m_pChWarning->w_voltage_up) {qDebug()<<"HaveWarning "<< m_nIndex<<" V_up";} if(m_pChWarning->w_voltage_down){qDebug()<<"HaveWarning "<< m_nIndex<<" V_down";} if(m_pChWarning->w_current) {qDebug()<<"HaveWarning "<< m_nIndex<<" I_up";} if(m_pChWarning->w_power) {qDebug()<<"HaveWarning "<< m_nIndex<<" P_up";} if(m_pChWarning->w_consumption) {qDebug()<<"HaveWarning "<< m_nIndex<<" SUM_up";} }else { qDebug()<<"No Warning Load CH"<setStyleSheet(StopStatus); } } } } bool ch_Widget::event(QEvent *event) { if (event->type() == QEvent::TouchBegin || event->type() == QEvent::TouchUpdate || event->type() == QEvent::TouchEnd) { // 不处理触摸事件,交给父级(QScrollArea 的视口)处理 return false; } return QWidget::event(event); }