#include "StateWidget.h" StateWidget::StateWidget(int flag,int index,QWidget *parent) : QWidget(parent) { gridlayout = new QGridLayout(this); gridlayout->setMargin(0); gridlayout->setVerticalSpacing(6); title = new QLabel("new status"); title->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); title->setFixedSize(w/2,h+m_offset); gridlayout->addWidget(title,0,0,1,1); if(flag == 0) { label = new QLabel("0"); label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); label->setFixedSize(w/2,h+m_offset); setColor(state::gray); gridlayout->addWidget(label,0,1,1,1); } else { bar = new QProgressBar(); bar->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); bar->setRange(0,100); bar->setValue(0); bar->setFixedSize(w/2,h+m_offset); gridlayout->addWidget(bar,0,1,1,1); } this->setLayout(gridlayout); this->resize(w,h+ 2 * m_offset); } StateWidget::StateWidget(int flag, QString t,QVariant v,state s,int index, QWidget *parent) : QWidget(parent) { id = index; gridlayout = new QGridLayout(this); gridlayout->setMargin(0); gridlayout->setVerticalSpacing(6); title = new QLabel(t); title->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); title->setFixedSize(w/2,h+m_offset); gridlayout->addWidget(title,0,0,1,1); if(flag == 0) { label = new QLabel(v.toString()); label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); label->setFixedSize(w/2,h+m_offset); setColor(s); gridlayout->addWidget(label,0,1,1,1); } else { bar = new QProgressBar(); bar->setFormat("%v"); bar->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); bar->setRange(0,100); bar->setValue(v.toDouble()); bar->setFixedSize(w/2,h+m_offset); gridlayout->addWidget(bar,0,1,1,1); } this->setLayout(gridlayout); this->resize(w,h + 2 * m_offset); } StateWidget::~StateWidget() { if(title) { delete title; } if(label) { delete label; } if(bar) { delete bar; } if(gridlayout) { delete gridlayout; } } void StateWidget::setColor(state s) { if(label) { label->setProperty("state",s); label->style()->unpolish(label); label->style()->polish(label); } if(bar) { bar->setProperty("state",s); bar->style()->unpolish(bar); bar->style()->polish(bar); } } void StateWidget::setValue(QString s) { if(label) { label->setText(s); } if(bar) { bar->setValue(s.toDouble()); } } void StateWidget::setRange(double m_min,double m_max) { min = m_min; max = m_max; if(bar) { bar->setRange(m_min,m_max); } }