#include "oneitem.h" #include "ui_oneitem.h" #include #include "LHQLogAPI.h" OneItem::OneItem(QWidget *parent, bool isSpecial) : QWidget(parent), m_isSpecial(isSpecial), ui(new Ui::OneItem) { ui->setupUi(this); /* 加载QSS */ QFile file(":/QSS/QSS/OneItem_dark.qss"); if(file.open(QIODevice::ReadOnly)) { QString stylesheet = file.readAll(); this->setStyleSheet(stylesheet); file.close(); } else { LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName())); } /* 设置定时器 */ m_warnTimer.setTimerType(Qt::PreciseTimer); m_warnTimer.setSingleShot(true); connect(&m_warnTimer,&QTimer::timeout,this,[this](){ ui->label_warnning->hide(); }); /* 根据是否是特殊日移动位置 */ layoutInit(); /* 注册事件过滤器 */ ui->comboBox_devName->installEventFilter(this); ui->comboBox_action->installEventFilter(this); /* 连接信号和槽 */ connect(ui->comboBox_devName,QOverload::of(&QComboBox::currentTextChanged),this,&OneItem::do_devChanged); connect(ui->comboBox_action,QOverload::of(&QComboBox::currentTextChanged),this,&OneItem::do_actionChanged); connect(ui->pBtn_execTime,&QPushButton::clicked,this,&OneItem::do_pBtn_execTime_clicked); connect(ui->pBtn_execDate,&QPushButton::clicked,this,&OneItem::do_pBtn_execDate_clicked); } OneItem::~OneItem() { delete ui; } /* 设置序号 */ void OneItem::setNum(int num) { ui->label_num->setText(QString::number(num)); } /* 获取序号 */ int OneItem::getNum() { return ui->label_num->text().toInt(); } /* 设置日期 */ void OneItem::setDate(const QDate& date) { ui->pBtn_execDate->setText(date.toString("yyyy-MM-dd")); } /* 获取日期 */ QDate OneItem::getDate() { return QDate::fromString(ui->pBtn_execDate->text(),"yyyy-MM-dd"); } /* 设置执行时间 */ void OneItem::setExecTime(const QTime& time) { ui->pBtn_execTime->setText(time.toString("hh:mm:ss")); } /* 获取执行时间 */ QTime OneItem::getExecTime() { return QTime::fromString(ui->pBtn_execTime->text(),"hh:mm:ss"); } /* 设置设备名称 */ void OneItem::setDevName(const QString& dev) { ui->comboBox_devName->setCurrentText(dev); } /* 获取设备名称 */ QString OneItem::getDevName() { return ui->comboBox_devName->currentText(); } /* 通过动作名称设置动作 */ void OneItem::setActionName(const QString &action) { ui->comboBox_action->setCurrentText(action); } /* 获取动作名称 */ QString OneItem::getActionName() { return ui->comboBox_action->currentText(); } /* 获取动作类型 */ int OneItem::getActionNum() { return ui->comboBox_action->currentIndex(); } /* 添加设备 */ void OneItem::addDevice(const QMap& mapDev) { ui->comboBox_devName->clear(); for(const auto& it : mapDev) { ui->comboBox_devName->addItem(it.devName); } /* 设置显示第一个设备,并设置可选的动作 */ ui->comboBox_devName->setCurrentIndex(0); setActionName(ui->comboBox_devName->currentText()); } /* 获取日期类型 */ bool OneItem::getDateType() { return m_isSpecial; } /* 设置警告 */ void OneItem::setWarningText(QString str, int ms) { ui->label_warnning->setText(str); ui->label_warnning->show(); if(ms > 0) { m_warnTimer.start(ms); } } /* 隐藏警告 */ void OneItem::hideWarn() { ui->label_warnning->hide(); } /* 设备改变了 */ void OneItem::do_devChanged(QString devName) { /* 根据选择的设备,设置该设备的动作 */ ui->comboBox_action->clear(); auto it = DeviceContainer.getDevice(devName); if(it.PTTypeCode > 0) { m_devInfo = it; for(auto it1 = m_devInfo.DevType.devAction.begin();it1 != m_devInfo.DevType.devAction.end();it1++) { ui->comboBox_action->addItem(it1.value(), it1.key()); } }else { LH_WRITE_ERROR(QString("没有这个设备:%1").arg(devName)); return; } emit signal_devChanged(); } /* 动作改变了 */ void OneItem::do_actionChanged(QString action) { } /* 执行时间被点击了 */ void OneItem::do_pBtn_execTime_clicked() { emit signal_execTimeClicked(getExecTime()); } /* 执行日期被点击了 */ void OneItem::do_pBtn_execDate_clicked() { emit signal_dateClicked(getDate()); } /* 根据日期类型布局 */ void OneItem::layoutInit() { /* 正常日,日期隐藏 */ if(!m_isSpecial) { ui->pBtn_execDate->hide(); ui->pBtn_iconDate->hide(); /* 序号 */ ui->label_num->move(18, 0); /* 设备名称 */ ui->comboBox_devName->move(114, 0); /* 执行时间 */ ui->pBtn_execTime->move(390, 40); /* 执行时间图标 */ ui->pBtn_iconTime->move(498, 8); /* 动作 */ ui->comboBox_action->move(538, 0); /* 关闭 */ ui->pBtn_close->move(814, 0); }else { ui->pBtn_execDate->show(); ui->pBtn_iconDate->show(); /* 序号 */ ui->label_num->move(18, 0); /* 设备名称 */ ui->comboBox_devName->move(114, 0); /* 执行日期 */ ui->pBtn_execDate->move(390, 0); /* 执行日期图标 */ ui->pBtn_iconDate->move(498, 8); /* 执行时间 */ ui->pBtn_execTime->move(539, 40); /* 执行时间图标 */ ui->pBtn_iconTime->move(646, 8); /* 动作 */ ui->comboBox_action->move(686, 0); /* 关闭 */ ui->pBtn_close->move(962, 0); } } /* 事件过滤器 */ bool OneItem::eventFilter(QObject *watched, QEvent *event) { if(watched == ui->comboBox_action) { if(event->type() == QEvent::Wheel) { return true; } } else if(watched == ui->comboBox_devName) { if(event->type() == QEvent::Wheel) { return true; } } return QWidget::eventFilter(watched,event); }