savetotemplate.cpp 5.3 KB

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