#include "importtemplate.h" #include "ui_importtemplate.h" #include #include #include #include #include #include #include "warning/warning.h" // #include "lhstylemanager.h" #include "LHQLogAPI.h" #include "OneShadowEffect.h" #include "TransmitterSwitchInfo.h" ImportTemplate::ImportTemplate(QStringList& tabList,QWidget *parent) : QDialog(parent), ui(new Ui::ImportTemplate) { ui->setupUi(this); /* 设置隐藏边框 */ this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); /* 设置底层样式表 */ this->setAttribute(Qt::WA_TranslucentBackground); /* 加载QSS文件 */ // QFile file(":/QSS/QSS/importtemplate_light.qss"); // if(file.open(QFile::ReadOnly)) // { // QString styleSheet = file.readAll(); // this->setStyleSheet(styleSheet); // file.close(); // } /* 创建阴影 */ QSize size = this->size(); size.setWidth(size.width() - 32); size.setHeight(size.height() - 32); // m_shadow = new OneShadow(size, 16); auto pShadow = new OneShadowEffect(this); this->setGraphicsEffect(pShadow); m_templateName.clear(); /* 设置列数,列宽、列高、不可编辑、选择一行 */ ui->tableWidget->setColumnCount(3); //设置行高 ui->tableWidget->verticalHeader()->setDefaultSectionSize(48); /* 设置最小列宽 */ ui->tableWidget->horizontalHeader()->setMinimumSectionSize(10); /* 设置列宽间距 */ ui->tableWidget->setColumnWidth(0,46); ui->tableWidget->setColumnWidth(1,272); ui->tableWidget->setColumnWidth(2,60); //设置不可编辑 ui->tableWidget->setEditTriggers(QTableWidget::NoEditTriggers); //设置选中一行 ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //设置只能选中一行 ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); //隐藏竖滚动条 ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //隐藏横滚动条 ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //隐藏网格线 ui->tableWidget->setShowGrid(false); //隐藏行号 ui->tableWidget->verticalHeader()->setVisible(false); //隐藏列表头 ui->tableWidget->horizontalHeader()->setVisible(false); //设置不显示选中后的虚线 ui->tableWidget->setFocusPolicy(Qt::NoFocus); //开启排序功能 // ui->tableWidget->setSortingEnabled(true); ui->label_warning->hide(); connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close())); connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close())); connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok())); connect(ui->tableWidget,SIGNAL(cellClicked(int,int)),this,SLOT(do_seletctRow(int,int))); /* 先设置表格的行数 */ ui->tableWidget->setRowCount(tabList.count()); for(int i = 0;i < tabList.count();i++) { createRow(i,i + 1,tabList.at(i)); } /* 注册事件过滤器 */ ui->pBtn_close->installEventFilter(this); } ImportTemplate::~ImportTemplate() { delete ui; } void ImportTemplate::do_ok() { ui->label_warning->hide(); if(m_templateName.isEmpty()) { ui->label_warning->setText("请选择模版"); ui->label_warning->show(); return; } m_isOk = true; emit signal_templateName(m_templateName); this->close(); } /* 选中一行 */ void ImportTemplate::do_seletctRow(int row, int col) { if(col == 2) { /* 弹出框提示确定要删除 */ Warning w(this); w.setQSS(EPConfig.getQSSPath()); w.setText("是否删除模板?"); bool flag = false; connect(&w,&Warning::signal_ok,this,[&](){ flag = true; }); w.exec(); if(!flag) { return; } emit signal_deleteTemplate(ui->tableWidget->item(row,1)->text()); ui->tableWidget->removeRow(row); /* 对模版重新编号 */ for(int i = 0 ;i < ui->tableWidget->rowCount();i++) { ui->tableWidget->item(i,0)->setData(Qt::DisplayRole,i+1); } }else { m_templateName = ui->tableWidget->item(row,1)->text(); } } /* 创建一行数据 */ void ImportTemplate::createRow(int row,int num,const QString &text) { /* 获取亮色还是暗色 */ bool isDark = (EPConfig.getUIStyle() == enum_UIStyle::UI_Dark ? true : false); QTableWidgetItem* item = new QTableWidgetItem; item->setData(Qt::DisplayRole,num); // item->setTextAlignment(Qt::AlignVCenter); ui->tableWidget->setItem(row,0,item); item = new QTableWidgetItem(text); // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignLeft); ui->tableWidget->setItem(row,1,item); item = new QTableWidgetItem("删除"); // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignHCenter); if(isDark) { item->setForeground(QColor(95, 158, 255)); }else { item->setForeground(Qt::blue); } ui->tableWidget->setItem(row,2,item); } /* 设置QSS */ void ImportTemplate::setQSSPath(const QString& qssPath) { if(qssPath.isEmpty()) { return; } QString qssFile = qssPath + "/importtemplate.qss"; QFile file(qssFile); if(file.open(QFile::ReadOnly)) { QString styleSheet = file.readAll(); this->setStyleSheet(styleSheet); file.close(); }else { LH_WRITE_ERROR(QString("Open %1 failed").arg(qssFile)); } } /* 绘画事件 */ // void ImportTemplate::paintEvent(QPaintEvent *event) // { // QPainter painter(this); // painter.setRenderHint(QPainter::Antialiasing); // painter.drawImage(QPoint(0, 0), m_shadow->image()); // } /* 事件过滤器 */ bool ImportTemplate::eventFilter(QObject *watched, QEvent *event) { if(watched == ui->pBtn_close) { if(event->type() == QEvent::Enter) { ui->pBtn_close->setProperty("Hover", true); ui->pBtn_close->style()->unpolish(ui->pBtn_close); ui->pBtn_close->style()->polish(ui->pBtn_close); return true; }else if(event->type() == QEvent::Leave) { ui->pBtn_close->setProperty("Hover", false); ui->pBtn_close->style()->unpolish(ui->pBtn_close); ui->pBtn_close->style()->polish(ui->pBtn_close); return true; } } return QWidget::eventFilter(watched,event); } /* 鼠标点击事件 */ void ImportTemplate::mousePressEvent(QMouseEvent *event) { m_lastPos = event->globalPos(); event->accept(); } /* 鼠标移动事件 */ void ImportTemplate::mouseMoveEvent(QMouseEvent *event) { // QRect rect = this->geometry(); // rect.setBottom(rect.top()+50); auto point = ui->widget_Top->mapToGlobal(QPoint(0, 0)); QRect rect(point, ui->widget_Top->size()); if(!rect.contains(m_lastPos)) { event->accept(); return; } int dx = event->globalX() - m_lastPos.x(); int dy = event->globalY() - m_lastPos.y(); move(x()+dx, y()+dy); m_lastPos = event->globalPos(); event->accept(); } /* 鼠标释放事件 */ void ImportTemplate::mouseReleaseEvent(QMouseEvent *event) { event->accept(); }