importtemplate.cpp 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. #include "importtemplate.h"
  2. #include "ui_importtemplate.h"
  3. #include <QDebug>
  4. #include <QPoint>
  5. #include <QTableWidgetItem>
  6. #include <QFile>
  7. #include <QPainter>
  8. #include <QMouseEvent>
  9. #include "warning/warning.h"
  10. // #include "lhstylemanager.h"
  11. #include "LHQLogAPI.h"
  12. #include "OneShadowEffect.h"
  13. #include "TransmitterSwitchInfo.h"
  14. ImportTemplate::ImportTemplate(QStringList& tabList,QWidget *parent) :
  15. QDialog(parent),
  16. ui(new Ui::ImportTemplate)
  17. {
  18. ui->setupUi(this);
  19. /* 设置隐藏边框 */
  20. this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
  21. /* 设置底层样式表 */
  22. this->setAttribute(Qt::WA_TranslucentBackground);
  23. /* 加载QSS文件 */
  24. // QFile file(":/QSS/QSS/importtemplate_light.qss");
  25. // if(file.open(QFile::ReadOnly))
  26. // {
  27. // QString styleSheet = file.readAll();
  28. // this->setStyleSheet(styleSheet);
  29. // file.close();
  30. // }
  31. /* 创建阴影 */
  32. QSize size = this->size();
  33. size.setWidth(size.width() - 32);
  34. size.setHeight(size.height() - 32);
  35. // m_shadow = new OneShadow(size, 16);
  36. auto pShadow = new OneShadowEffect(this);
  37. this->setGraphicsEffect(pShadow);
  38. m_templateName.clear();
  39. /* 设置列数,列宽、列高、不可编辑、选择一行 */
  40. ui->tableWidget->setColumnCount(3);
  41. //设置行高
  42. ui->tableWidget->verticalHeader()->setDefaultSectionSize(48);
  43. /* 设置最小列宽 */
  44. ui->tableWidget->horizontalHeader()->setMinimumSectionSize(10);
  45. /* 设置列宽间距 */
  46. ui->tableWidget->setColumnWidth(0,46);
  47. ui->tableWidget->setColumnWidth(1,272);
  48. ui->tableWidget->setColumnWidth(2,60);
  49. //设置不可编辑
  50. ui->tableWidget->setEditTriggers(QTableWidget::NoEditTriggers);
  51. //设置选中一行
  52. ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  53. //设置只能选中一行
  54. ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  55. //隐藏竖滚动条
  56. ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  57. //隐藏横滚动条
  58. ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  59. //隐藏网格线
  60. ui->tableWidget->setShowGrid(false);
  61. //隐藏行号
  62. ui->tableWidget->verticalHeader()->setVisible(false);
  63. //隐藏列表头
  64. ui->tableWidget->horizontalHeader()->setVisible(false);
  65. //设置不显示选中后的虚线
  66. ui->tableWidget->setFocusPolicy(Qt::NoFocus);
  67. //开启排序功能
  68. // ui->tableWidget->setSortingEnabled(true);
  69. ui->label_warning->hide();
  70. connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close()));
  71. connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close()));
  72. connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok()));
  73. connect(ui->tableWidget,SIGNAL(cellClicked(int,int)),this,SLOT(do_seletctRow(int,int)));
  74. /* 先设置表格的行数 */
  75. ui->tableWidget->setRowCount(tabList.count());
  76. for(int i = 0;i < tabList.count();i++)
  77. {
  78. createRow(i,i + 1,tabList.at(i));
  79. }
  80. /* 注册事件过滤器 */
  81. ui->pBtn_close->installEventFilter(this);
  82. }
  83. ImportTemplate::~ImportTemplate()
  84. {
  85. delete ui;
  86. }
  87. void ImportTemplate::do_ok()
  88. {
  89. ui->label_warning->hide();
  90. if(m_templateName.isEmpty())
  91. {
  92. ui->label_warning->setText("请选择模版");
  93. ui->label_warning->show();
  94. return;
  95. }
  96. m_isOk = true;
  97. emit signal_templateName(m_templateName);
  98. this->close();
  99. }
  100. /* 选中一行 */
  101. void ImportTemplate::do_seletctRow(int row, int col)
  102. {
  103. if(col == 2)
  104. {
  105. /* 弹出框提示确定要删除 */
  106. Warning w(this);
  107. w.setQSS(EPConfig.getQSSPath());
  108. w.setText("是否删除模板?");
  109. bool flag = false;
  110. connect(&w,&Warning::signal_ok,this,[&](){
  111. flag = true;
  112. });
  113. w.exec();
  114. if(!flag)
  115. {
  116. return;
  117. }
  118. emit signal_deleteTemplate(ui->tableWidget->item(row,1)->text());
  119. ui->tableWidget->removeRow(row);
  120. /* 对模版重新编号 */
  121. for(int i = 0 ;i < ui->tableWidget->rowCount();i++)
  122. {
  123. ui->tableWidget->item(i,0)->setData(Qt::DisplayRole,i+1);
  124. }
  125. }else
  126. {
  127. m_templateName = ui->tableWidget->item(row,1)->text();
  128. }
  129. }
  130. /* 创建一行数据 */
  131. void ImportTemplate::createRow(int row,int num,const QString &text)
  132. {
  133. /* 获取亮色还是暗色 */
  134. bool isDark = (EPConfig.getUIStyle() == enum_UIStyle::UI_Dark ? true : false);
  135. QTableWidgetItem* item = new QTableWidgetItem;
  136. item->setData(Qt::DisplayRole,num);
  137. // item->setTextAlignment(Qt::AlignVCenter);
  138. ui->tableWidget->setItem(row,0,item);
  139. item = new QTableWidgetItem(text);
  140. // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignLeft);
  141. ui->tableWidget->setItem(row,1,item);
  142. item = new QTableWidgetItem("删除");
  143. // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
  144. if(isDark)
  145. {
  146. item->setForeground(QColor(95, 158, 255));
  147. }else {
  148. item->setForeground(Qt::blue);
  149. }
  150. ui->tableWidget->setItem(row,2,item);
  151. }
  152. /* 设置QSS */
  153. void ImportTemplate::setQSSPath(const QString& qssPath)
  154. {
  155. if(qssPath.isEmpty())
  156. {
  157. return;
  158. }
  159. QString qssFile = qssPath + "/importtemplate.qss";
  160. QFile file(qssFile);
  161. if(file.open(QFile::ReadOnly))
  162. {
  163. QString styleSheet = file.readAll();
  164. this->setStyleSheet(styleSheet);
  165. file.close();
  166. }else
  167. {
  168. LH_WRITE_ERROR(QString("Open %1 failed").arg(qssFile));
  169. }
  170. }
  171. /* 绘画事件 */
  172. // void ImportTemplate::paintEvent(QPaintEvent *event)
  173. // {
  174. // QPainter painter(this);
  175. // painter.setRenderHint(QPainter::Antialiasing);
  176. // painter.drawImage(QPoint(0, 0), m_shadow->image());
  177. // }
  178. /* 事件过滤器 */
  179. bool ImportTemplate::eventFilter(QObject *watched, QEvent *event)
  180. {
  181. if(watched == ui->pBtn_close)
  182. {
  183. if(event->type() == QEvent::Enter)
  184. {
  185. ui->pBtn_close->setProperty("Hover", true);
  186. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  187. ui->pBtn_close->style()->polish(ui->pBtn_close);
  188. return true;
  189. }else if(event->type() == QEvent::Leave)
  190. {
  191. ui->pBtn_close->setProperty("Hover", false);
  192. ui->pBtn_close->style()->unpolish(ui->pBtn_close);
  193. ui->pBtn_close->style()->polish(ui->pBtn_close);
  194. return true;
  195. }
  196. }
  197. return QWidget::eventFilter(watched,event);
  198. }
  199. /* 鼠标点击事件 */
  200. void ImportTemplate::mousePressEvent(QMouseEvent *event)
  201. {
  202. m_lastPos = event->globalPos();
  203. event->accept();
  204. }
  205. /* 鼠标移动事件 */
  206. void ImportTemplate::mouseMoveEvent(QMouseEvent *event)
  207. {
  208. // QRect rect = this->geometry();
  209. // rect.setBottom(rect.top()+50);
  210. auto point = ui->widget_Top->mapToGlobal(QPoint(0, 0));
  211. QRect rect(point, ui->widget_Top->size());
  212. if(!rect.contains(m_lastPos))
  213. {
  214. event->accept();
  215. return;
  216. }
  217. int dx = event->globalX() - m_lastPos.x();
  218. int dy = event->globalY() - m_lastPos.y();
  219. move(x()+dx, y()+dy);
  220. m_lastPos = event->globalPos();
  221. event->accept();
  222. }
  223. /* 鼠标释放事件 */
  224. void ImportTemplate::mouseReleaseEvent(QMouseEvent *event)
  225. {
  226. event->accept();
  227. }