#include "savetotemplate.h" #include "ui_savetotemplate.h" #include #include #include #include #include "LHQLogAPI.h" #include "OneShadowEffect.h" SaveToTemplate::SaveToTemplate(QWidget *parent) : QDialog(parent), ui(new Ui::SaveToTemplate) { ui->setupUi(this); /* 设置隐藏边框 */ this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); /* 设置底层样式表 */ this->setAttribute(Qt::WA_TranslucentBackground); /* 创建阴影,这里大小使用最外面的大小减去阴影宽度 */ QSize size = this->size(); size.setWidth(size.width() - 32); size.setHeight(size.height() - 32); // m_shadow = new OneShadow(size, 16); auto pShadow = new OneShadowEffect(this); this->setGraphicsEffect(pShadow); m_list.clear(); ui->label_warn->hide(); /* 限制字数类型 */ ui->lineEdit->setMaxLength(15); connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close())); connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close())); connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok())); /* 注册事件过滤器 */ ui->pBtn_close->installEventFilter(this); } SaveToTemplate::~SaveToTemplate() { delete ui; } /* 传入计划项是否为空 */ void SaveToTemplate::setItemEmpty(bool flag) { m_itemEmpty = flag; } /* 传入所有的模板名称,会进行判断,只传入相同类型的模板名称 */ void SaveToTemplate::setTemplateList(QList& list) { m_list = list; // for(auto begin = m_templateNameList.begin(), end = m_templateNameList.end(); begin != end; ++begin) // { // LH_WRITE_LOG_DEBUG(QString("模板名称:%1, 类型:%2").arg(begin.key()).arg(begin.value())); // } } /* 获取模板名称 */ QString SaveToTemplate::getTemplateName() { return m_templateName; } /* 设置QSS */ void SaveToTemplate::setQSS(QString qssPath) { QString qssFile = qssPath + "/savetotemplate.qss"; QFile file(qssFile); if(file.open(QIODevice::ReadOnly)) { QString stylesheet = file.readAll(); this->setStyleSheet(stylesheet); file.close(); } else { LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName())); } } void SaveToTemplate::do_ok() { m_isOk = false; m_templateName.clear(); ui->label_warn->hide(); setWarning(false); /* 检查这一页的项是否为空,不用再这里检查了,在外面检查完成了 */ // if(m_itemEmpty) // { // ui->label_warn->setText("当前页没有计划项!"); // ui->label_warn->show(); // setWarning(true); // return; // } /* 检查名称是否是空的 */ m_templateName = ui->lineEdit->text(); if(m_templateName.isEmpty()) { ui->label_warn->setText("请输入模版名称!"); ui->label_warn->show(); setWarning(true); return; } /* 检查模板名称是否重复 */ bool flag = false; for(auto begin = m_list.begin(), end = m_list.end(); begin != end; ++begin) { if(begin->templateName == m_templateName) { flag = true; break; } } if(flag) { ui->label_warn->setText("模版名称重复!"); ui->label_warn->show(); setWarning(true); return; } m_isOk = true; emit signal_templateName(m_templateName); this->close(); } /* 设置报警 */ void SaveToTemplate::setWarning(bool flag) { if(flag) { ui->lineEdit->setProperty("Warn", true); }else { ui->lineEdit->setProperty("Warn", false); } ui->lineEdit->style()->unpolish(ui->lineEdit); ui->lineEdit->style()->polish(ui->lineEdit); } /* 绘画事件 */ // void SaveToTemplate::paintEvent(QPaintEvent *event) // { // QPainter painter(this); // painter.setRenderHint(QPainter::Antialiasing); // painter.drawImage(QPoint(0, 0), m_shadow->image()); // } bool SaveToTemplate::eventFilter(QObject *watched, QEvent *event) { if(watched == ui->pBtn_close) { if(event->type() == QEvent::Enter) { ui->pBtn_close->setProperty("Hover", true); ui->pBtn_close->style()->unpolish(ui->pBtn_close); ui->pBtn_close->style()->polish(ui->pBtn_close); return true; }else if(event->type() == QEvent::Leave) { ui->pBtn_close->setProperty("Hover", false); ui->pBtn_close->style()->unpolish(ui->pBtn_close); ui->pBtn_close->style()->polish(ui->pBtn_close); return true; } } return QWidget::eventFilter(watched,event); } /* 鼠标点击事件 */ void SaveToTemplate::mousePressEvent(QMouseEvent *event) { m_lastPos = event->globalPos(); event->accept(); } /* 鼠标移动事件 */ void SaveToTemplate::mouseMoveEvent(QMouseEvent *event) { // QRect rect = this->geometry(); // rect.setBottom(rect.top()+50); auto point = ui->widget_Top->mapToGlobal(QPoint(0, 0)); QRect rect(point, ui->widget_Top->size()); if(!rect.contains(m_lastPos)) { event->accept(); return; } int dx = event->globalX() - m_lastPos.x(); int dy = event->globalY() - m_lastPos.y(); move(x()+dx, y()+dy); m_lastPos = event->globalPos(); event->accept(); } /* 鼠标释放事件 */ void SaveToTemplate::mouseReleaseEvent(QMouseEvent *event) { event->accept(); }