importtemplate.cpp 6.3 KB

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