#include "importtemplate.h" #include "ui_importtemplate.h" #include #include #include #include #include #include #include "warning/warning.h" #include "LHQLogAPI.h" #include "OneShadowEffect.h" #include "TransmitterSwitchInfo.h" #include "UIStyleManager.h" ImportTemplate::ImportTemplate(QWidget *parent) : QDialog(parent), ui(new Ui::ImportTemplate) { ui->setupUi(this); /* 设置隐藏边框 */ this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); /* 设置底层样式表 */ this->setAttribute(Qt::WA_TranslucentBackground); /* 创建阴影 */ QSize size = this->size(); size.setWidth(size.width() - 40); size.setHeight(size.height() - 40); auto pShadow = new OneShadowEffect(this); this->setGraphicsEffect(pShadow); m_templateName.clear(); /* 设置列数 */ ui->tableWidget->horizontalHeader()->setVisible(true); ui->tableWidget->setColumnCount(3); /* 设置列表头 */ QStringList headerList; headerList << "频率名称" << "模版名称" << "选择"; ui->tableWidget->setHorizontalHeaderLabels(headerList); /* 设置列表头高度 */ ui->tableWidget->horizontalHeader()->setDefaultSectionSize(40); /* 设置列宽间距 */ ui->tableWidget->setColumnWidth(0, 274); ui->tableWidget->setColumnWidth(1, 274); ui->tableWidget->setColumnWidth(2, 88); /* 设置列宽度固定 */ ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed); ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Fixed); ui->tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Fixed); //设置行高 ui->tableWidget->verticalHeader()->setDefaultSectionSize(48); //设置不可编辑 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->setFocusPolicy(Qt::NoFocus); //开启排序功能 // ui->tableWidget->setSortingEnabled(true); 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))); connect(&EPUIStyle, &UIStyleManager::signal_qssChanged, this, &ImportTemplate::do_setUIStyle); /* 取出当前可用的模版,主要是区分正常日和特殊日 */ // QStringList list; // for(auto begin = tabList.begin(); begin != tabList.end(); begin++) // { // // LH_WRITE_LOG_DEBUG(QString("模版名称:%1, 类型:%2").arg(begin.key()).arg(begin.value())); // if(begin.value() != m_type) // { // continue; // } // list.append(begin.key()); // } // /* 先设置表格的行数 */ // ui->tableWidget->setRowCount(list.count()); // for(int i = 0;i < list.count();i++) // { // createRow(i, i + 1, list.at(i)); // } /* 注册事件过滤器 */ ui->pBtn_close->installEventFilter(this); /* 设置默认的皮肤 */ do_setUIStyle(); } ImportTemplate::~ImportTemplate() { delete ui; } void ImportTemplate::do_ok() { m_isOk = true; emit signal_templateName(m_templateName); this->close(); } /* 选中一行 */ void ImportTemplate::do_seletctRow(int row, int col) { if(col == 2) { /* 弹出框提示确定要删除 */ std::shared_ptr w = std::make_shared(this); w->setQSS(EPUIStyle.getQSSPath()); w->setText("是否删除模板?"); bool flag = false; connect(w.get(), &Warning::signal_ok,this,[&](){ flag = true; }); w->exec(); if(!flag) { return; } emit signal_deleteTemplate(ui->tableWidget->item(row,1)->text()); /* 删除一行 */ ui->tableWidget->removeRow(row); // LH_WRITE_LOG_DEBUG(QString("剩余模版个数:%1").arg(ui->tableWidget->rowCount())); /* 对模版重新编号 */ for(int i = 0 ;i < ui->tableWidget->rowCount();i++) { ui->tableWidget->item(i,0)->setData(Qt::DisplayRole, i+1); } /* 强制重新绘制表格 */ ui->tableWidget->repaint(); }else { m_templateName = ui->tableWidget->item(row,1)->text(); } } /* 设置样式表 */ void ImportTemplate::do_setUIStyle() { setQSSPath(EPUIStyle.getQSSPath()); } /* 创建一行数据 */ void ImportTemplate::createRow(int row,int num,const QString &text) { /* 获取亮色还是暗色 */ bool isDark = (EPUIStyle.getUIStyle() == enum_UIStyle::UI_Dark ? true : false); QTableWidgetItem* item = new QTableWidgetItem; item->setData(Qt::DisplayRole,num); ui->tableWidget->setItem(row,0,item); item = new QTableWidgetItem(text); 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(); }