savetotemplate.cpp 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. #include "savetotemplate.h"
  2. #include "ui_savetotemplate.h"
  3. #include <QStyle>
  4. #include <QFile>
  5. #include <QPainter>
  6. #include <QMouseEvent>
  7. #include "LHQLogAPI.h"
  8. #include "OneShadowEffect.h"
  9. SaveToTemplate::SaveToTemplate(QWidget *parent) :
  10. QDialog(parent),
  11. ui(new Ui::SaveToTemplate)
  12. {
  13. ui->setupUi(this);
  14. /* 设置隐藏边框 */
  15. this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
  16. /* 设置底层样式表 */
  17. this->setAttribute(Qt::WA_TranslucentBackground);
  18. /* 创建阴影,这里大小使用最外面的大小减去阴影宽度 */
  19. QSize size = this->size();
  20. size.setWidth(size.width() - 32);
  21. size.setHeight(size.height() - 32);
  22. // m_shadow = new OneShadow(size, 16);
  23. auto pShadow = new OneShadowEffect(this);
  24. this->setGraphicsEffect(pShadow);
  25. m_list.clear();
  26. ui->label_warn->hide();
  27. /* 限制字数类型 */
  28. ui->lineEdit->setMaxLength(15);
  29. connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close()));
  30. connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close()));
  31. connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok()));
  32. /* 注册事件过滤器 */
  33. ui->pBtn_close->installEventFilter(this);
  34. }
  35. SaveToTemplate::~SaveToTemplate()
  36. {
  37. delete ui;
  38. }
  39. /* 传入计划项是否为空 */
  40. void SaveToTemplate::setItemEmpty(bool flag)
  41. {
  42. m_itemEmpty = flag;
  43. }
  44. /* 传入所有的模板名称,会进行判断,只传入相同类型的模板名称 */
  45. void SaveToTemplate::setTemplateList(QList<OneTemplateInfo>& list)
  46. {
  47. m_list = list;
  48. // for(auto begin = m_templateNameList.begin(), end = m_templateNameList.end(); begin != end; ++begin)
  49. // {
  50. // LH_WRITE_LOG_DEBUG(QString("模板名称:%1, 类型:%2").arg(begin.key()).arg(begin.value()));
  51. // }
  52. }
  53. /* 获取模板名称 */
  54. QString SaveToTemplate::getTemplateName()
  55. {
  56. return m_templateName;
  57. }
  58. /* 设置QSS */
  59. void SaveToTemplate::setQSS(QString qssPath)
  60. {
  61. QString qssFile = qssPath + "/savetotemplate.qss";
  62. QFile file(qssFile);
  63. if(file.open(QIODevice::ReadOnly))
  64. {
  65. QString stylesheet = file.readAll();
  66. this->setStyleSheet(stylesheet);
  67. file.close();
  68. } else
  69. {
  70. LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
  71. }
  72. }
  73. void SaveToTemplate::do_ok()
  74. {
  75. m_isOk = false;
  76. m_templateName.clear();
  77. ui->label_warn->hide();
  78. setWarning(false);
  79. /* 检查这一页的项是否为空,不用再这里检查了,在外面检查完成了 */
  80. // if(m_itemEmpty)
  81. // {
  82. // ui->label_warn->setText("当前页没有计划项!");
  83. // ui->label_warn->show();
  84. // setWarning(true);
  85. // return;
  86. // }
  87. /* 检查名称是否是空的 */
  88. m_templateName = ui->lineEdit->text();
  89. if(m_templateName.isEmpty())
  90. {
  91. ui->label_warn->setText("请输入模版名称!");
  92. ui->label_warn->show();
  93. setWarning(true);
  94. return;
  95. }
  96. /* 检查模板名称是否重复 */
  97. bool flag = false;
  98. for(auto begin = m_list.begin(), end = m_list.end(); begin != end; ++begin)
  99. {
  100. if(begin->templateName == m_templateName)
  101. {
  102. flag = true;
  103. break;
  104. }
  105. }
  106. if(flag)
  107. {
  108. ui->label_warn->setText("模版名称重复!");
  109. ui->label_warn->show();
  110. setWarning(true);
  111. return;
  112. }
  113. m_isOk = true;
  114. emit signal_templateName(m_templateName);
  115. this->close();
  116. }
  117. /* 设置报警 */
  118. void SaveToTemplate::setWarning(bool flag)
  119. {
  120. if(flag)
  121. {
  122. ui->lineEdit->setProperty("Warn", true);
  123. }else
  124. {
  125. ui->lineEdit->setProperty("Warn", false);
  126. }
  127. ui->lineEdit->style()->unpolish(ui->lineEdit);
  128. ui->lineEdit->style()->polish(ui->lineEdit);
  129. }
  130. /* 绘画事件 */
  131. // void SaveToTemplate::paintEvent(QPaintEvent *event)
  132. // {
  133. // QPainter painter(this);
  134. // painter.setRenderHint(QPainter::Antialiasing);
  135. // painter.drawImage(QPoint(0, 0), m_shadow->image());
  136. // }
  137. bool SaveToTemplate::eventFilter(QObject *watched, QEvent *event)
  138. {
  139. if(watched == ui->pBtn_close)
  140. {
  141. if(event->type() == QEvent::Enter)
  142. {
  143. ui->pBtn_close->setProperty("Hover", true);
  144. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  145. ui->pBtn_close->style()->polish(ui->pBtn_close);
  146. return true;
  147. }else if(event->type() == QEvent::Leave)
  148. {
  149. ui->pBtn_close->setProperty("Hover", false);
  150. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  151. ui->pBtn_close->style()->polish(ui->pBtn_close);
  152. return true;
  153. }
  154. }
  155. return QWidget::eventFilter(watched,event);
  156. }
  157. /* 鼠标点击事件 */
  158. void SaveToTemplate::mousePressEvent(QMouseEvent *event)
  159. {
  160. m_lastPos = event->globalPos();
  161. event->accept();
  162. }
  163. /* 鼠标移动事件 */
  164. void SaveToTemplate::mouseMoveEvent(QMouseEvent *event)
  165. {
  166. // QRect rect = this->geometry();
  167. // rect.setBottom(rect.top()+50);
  168. auto point = ui->widget_Top->mapToGlobal(QPoint(0, 0));
  169. QRect rect(point, ui->widget_Top->size());
  170. if(!rect.contains(m_lastPos))
  171. {
  172. event->accept();
  173. return;
  174. }
  175. int dx = event->globalX() - m_lastPos.x();
  176. int dy = event->globalY() - m_lastPos.y();
  177. move(x()+dx, y()+dy);
  178. m_lastPos = event->globalPos();
  179. event->accept();
  180. }
  181. /* 鼠标释放事件 */
  182. void SaveToTemplate::mouseReleaseEvent(QMouseEvent *event)
  183. {
  184. event->accept();
  185. }