#include "previewplan.h" #include "ui_previewplan.h" #include #include #include #include #include #include #include "LHQLogAPI.h" #include "OneShadowEffect.h" #include "TransmitterSwitchInfo.h" #include "UIStyleManager.h" PreviewPlan::PreviewPlan(QWidget *parent) : QDialog(parent), ui(new Ui::PreviewPlan) { ui->setupUi(this); /* 设置大小 */ this->resize(600, 800); /* 设置隐藏边框 */ 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); connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close())); connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok())); /* 注册事件过滤器 */ ui->pBtn_close->installEventFilter(this); } PreviewPlan::~PreviewPlan() { delete ui; } void PreviewPlan::do_ok() { m_isOk = true; this->close(); } /* 设置频率信息 */ void PreviewPlan::setFrequencyInfo(const ChannelInfo& info) { ui->pCard->setChannelInfo(info); } /* 设置模版列表 */ void PreviewPlan::setTemplateList(QList list) { ui->pCard->setPlanList(list); } /* 设置QSS */ void PreviewPlan::setQSSPath(const QString& qssPath) { if(qssPath.isEmpty()) { return; } QString qssFile = qssPath + "/previewplan.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)); } } /* 事件过滤器 */ bool PreviewPlan::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 PreviewPlan::mousePressEvent(QMouseEvent *event) { m_lastPos = event->globalPos(); event->accept(); } /* 鼠标移动事件 */ void PreviewPlan::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 PreviewPlan::mouseReleaseEvent(QMouseEvent *event) { event->accept(); }