#include "awMsgBox.h" #include "ui_awMsgBox.h" #include "CAppInfo.h" #include #include std::list> awMsgBox::vMsgList; std::mutex awMsgBox::msgMutex; awMsgBox::awMsgBox(QWidget *parent) : QDialog(parent), ui(new Ui::awMsgBox) { ui->setupUi(this); setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground); setStyleSheet(g_appInfoPtr->m_sQssStr); if(m_pTimer == nullptr) { m_pTimer = std::make_shared(); m_pTimer->setInterval(3 * 1000); } connect(m_pTimer.get(), &QTimer::timeout, this, [&]() { m_pTimer->stop(); if (vMsgList.size() > 0) { std::scoped_lock lock(msgMutex); vMsgList.pop_front(); } size_t i = 0; for (std::list>::iterator it = vMsgList.begin(); it != vMsgList.end(); ++it) { (*it)->setGeometry((*it)->x(), g_appInfoPtr->m_fRate * 84 + i * g_appInfoPtr->m_fRate * 90, (*it)->width(), (*it)->height()); ++i; } }); m_pTimer->start(); } awMsgBox::~awMsgBox() { m_pTimer->stop(); delete ui; } void awMsgBox::initUI() { ui->label_awmb_content->adjustSize(); int nCW = g_appInfoPtr->m_fRate*40 + g_appInfoPtr->m_fRate*40 + g_appInfoPtr->m_fRate*(28 + 10) + ui->label_awmb_content->width(); QDesktopWidget *dekwiget = QApplication::desktop(); setGeometry((dekwiget->width() - nCW - g_appInfoPtr->m_fRate*10)/2, g_appInfoPtr->m_fRate*84 + vMsgList.size()*g_appInfoPtr->m_fRate * 90, nCW + g_appInfoPtr->m_fRate*10, g_appInfoPtr->m_fRate*90); ui->widget_awmb_BG->setGeometry(5, 5 , nCW, g_appInfoPtr->m_fRate*80); ui->label_awmb_icon->setGeometry(g_appInfoPtr->m_fRate*40, g_appInfoPtr->m_fRate*26, g_appInfoPtr->m_fRate*28, g_appInfoPtr->m_fRate*28); ui->label_awmb_content->setGeometry(ui->label_awmb_icon->x() + ui->label_awmb_icon->width() + g_appInfoPtr->m_fRate*10, (height() - ui->label_awmb_content->height())/2, ui->label_awmb_content->width(), ui->label_awmb_content->height()); ui->btn_awmb_close->setGeometry(ui->widget_awmb_BG->width() - g_appInfoPtr->m_fRate*(10 + 16), g_appInfoPtr->m_fRate*10, g_appInfoPtr->m_fRate*16, g_appInfoPtr->m_fRate*16); QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect; effect->setOffset(g_appInfoPtr->m_fRate*4,g_appInfoPtr->m_fRate*4); effect->setColor(QColor(0,0,0,30)); effect->setBlurRadius(g_appInfoPtr->m_fRate*16); ui->widget_awmb_BG->setGraphicsEffect(effect); } void ShowMsg(QString sMsg, QWidget *parent) { std::shared_ptr msg = std::make_shared(parent); msg->setMsg(sMsg); msg->initUI(); msg->show(); std::scoped_lock lock(awMsgBox::msgMutex); awMsgBox::vMsgList.push_back(msg); } void awMsgBox::setMsg(QString sMsg) { ui->label_awmb_content->setText(sMsg); } void awMsgBox::on_btn_awmb_close_clicked() { reject(); }