importtemplate.cpp 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  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. ImportTemplate::ImportTemplate(QStringList& tabList,QWidget *parent) :
  13. QDialog(parent),
  14. ui(new Ui::ImportTemplate)
  15. {
  16. ui->setupUi(this);
  17. /* 设置隐藏边框 */
  18. this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
  19. /* 设置底层样式表 */
  20. this->setAttribute(Qt::WA_TranslucentBackground);
  21. /* 加载QSS文件 */
  22. // QFile file(":/QSS/QSS/importtemplate_light.qss");
  23. // if(file.open(QFile::ReadOnly))
  24. // {
  25. // QString styleSheet = file.readAll();
  26. // this->setStyleSheet(styleSheet);
  27. // file.close();
  28. // }
  29. setQSS();
  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. ImportTemplate::~ImportTemplate()
  79. {
  80. delete ui;
  81. }
  82. void ImportTemplate::do_ok()
  83. {
  84. ui->label_warning->hide();
  85. if(m_templateName.isEmpty())
  86. {
  87. ui->label_warning->setText("请选择模版");
  88. ui->label_warning->show();
  89. return;
  90. }
  91. m_isOk = true;
  92. emit signal_templateName(m_templateName);
  93. this->close();
  94. }
  95. /* 选中一行 */
  96. void ImportTemplate::do_seletctRow(int row, int col)
  97. {
  98. if(col == 2)
  99. {
  100. /* 弹出框提示确定要删除 */
  101. Warning w(this);
  102. w.setText("是否删除模板?");
  103. bool flag = false;
  104. connect(&w,&Warning::signal_ok,this,[&](){
  105. flag = true;
  106. });
  107. w.exec();
  108. if(!flag)
  109. {
  110. return;
  111. }
  112. emit signal_deleteTemplate(ui->tableWidget->item(row,1)->text());
  113. ui->tableWidget->removeRow(row);
  114. /* 对模版重新编号 */
  115. for(int i = 0 ;i < ui->tableWidget->rowCount();i++)
  116. {
  117. ui->tableWidget->item(i,0)->setData(Qt::DisplayRole,i+1);
  118. }
  119. }else
  120. {
  121. m_templateName = ui->tableWidget->item(row,1)->text();
  122. }
  123. }
  124. /* 创建一行数据 */
  125. void ImportTemplate::createRow(int row,int num,const QString &text)
  126. {
  127. QTableWidgetItem* item = new QTableWidgetItem;
  128. item->setData(Qt::DisplayRole,num);
  129. // item->setTextAlignment(Qt::AlignVCenter);
  130. ui->tableWidget->setItem(row,0,item);
  131. item = new QTableWidgetItem(text);
  132. // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignLeft);
  133. ui->tableWidget->setItem(row,1,item);
  134. item = new QTableWidgetItem("删除");
  135. // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
  136. item->setForeground(Qt::blue);
  137. ui->tableWidget->setItem(row,2,item);
  138. }
  139. /* 设置QSS */
  140. void ImportTemplate::setQSS()
  141. {
  142. auto appPath = QApplication::applicationDirPath();
  143. QString qssPath;
  144. if(LHStyleManager::Instance()->GetCurSkinStyle() == eWhiteStyle)
  145. {
  146. qssPath = appPath + "/white/importtemplate.qss";
  147. }else if(LHStyleManager::Instance()->GetCurSkinStyle() == eBlackStyle)
  148. {
  149. qssPath = appPath + "/black/importtemplate.qss";
  150. }
  151. QFile file(qssPath);
  152. if(file.open(QIODevice::ReadOnly))
  153. {
  154. QString stylesheet = file.readAll();
  155. this->setStyleSheet(stylesheet);
  156. file.close();
  157. } else
  158. {
  159. LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
  160. }
  161. }
  162. /* 绘画事件 */
  163. void ImportTemplate::paintEvent(QPaintEvent *event)
  164. {
  165. QPainter painter(this);
  166. painter.setRenderHint(QPainter::Antialiasing);
  167. painter.drawImage(QPoint(0, 0), m_shadow->image());
  168. }