#include "qpulpewidget.h" #include "QApplication.h" #include "qdesktopwidget.h" #include "QLabel" #include "QBoxLayout" #pragma execution_character_set("utf-8") /*弹窗提示UI类*/ QPulpewidget::QPulpewidget(QWidget *parent) : QWidget(parent), lay(NULL), label(NULL) { setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Tool); setWindowModality(Qt::NonModal); m_nDesktopHeight = (QApplication::desktop()->height() / 2 + 10); m_dTransparent = 1.0; label = new QLabel; QFont font; font.setBold(true); font.setPixelSize(12); label->setFont(font); lay = new QHBoxLayout; lay->addWidget(label); this->setLayout(lay); m_showTimer = new QTimer(this); m_StayTimer = new QTimer(this); m_pcloseTimer = new QTimer(this); connect(m_showTimer, SIGNAL(timeout()), this, SLOT(onMove())); connect(m_pcloseTimer, SIGNAL(timeout()), this, SLOT(onClose())); connect(m_StayTimer, SIGNAL(timeout()), this, SLOT(onStay())); //connect(this, SIGNAL(finished()), this, SLOT(deleteLater())); } QPulpewidget::~QPulpewidget() { if (m_StayTimer) { delete m_StayTimer; m_StayTimer = NULL; } if (m_showTimer){ delete m_showTimer; m_showTimer = NULL; } if (m_pcloseTimer){ delete m_pcloseTimer; m_pcloseTimer = NULL; } if (lay){ delete lay; lay = NULL; } if (label){ delete label; label = NULL; } } Q_SLOT void QPulpewidget::onMove() { m_nDesktopHeight--; move(m_point.x(), m_nDesktopHeight); if (m_nDesktopHeight <= m_point.y()) { m_showTimer->stop(); m_StayTimer->start(100); } } Q_SLOT void QPulpewidget::onClose() { m_dTransparent -= 0.1; if (m_dTransparent <= 0.0) { m_pcloseTimer->stop(); close(); emit(finished()); emit(finishshow(this)); } else { setWindowOpacity(m_dTransparent); } } Q_SLOT void QPulpewidget::onStay() { m_StayTimer->stop(); m_pcloseTimer->start(100); } void QPulpewidget::showmessage(QString str) { // QRect rect = QApplication::desktop()->availableGeometry(); // int rectwid = rect.width(); // int recthid = rect.height(); // int wid = width(); // int hid = height(); //m_point.setX((rect.width() - width())/2); //m_point.setY((rect.height() - height())/2+100); //move(m_point.x(), m_point.y()/2); m_showTimer->start(2); label->setStyleSheet("background-color:rgb(0,210,200,10);font:20px;color:blue"); label->setText(str); show(); } void QPulpewidget::setParent(QWidget * pare/*=NULL*/) { if (pare) { m_nDesktopHeight = pare->height()/2; QRect m_rect = pare->geometry(); //m_point.setX(m_rect.x() + ((pare->width() / 2.0 - pare->width() / 5.0/*-width()*/))); // m_point.setX(m_rect.x() + ((pare->width() / 2.0 - pare->width() / 10.0/*-width()*/))); // m_point.setY(m_rect.y()+((pare->height()-height())/2)+ 50); m_point.setX(m_rect.x() + (m_rect.width() - width()) / 2.0); m_point.setY(m_rect.y() + (m_rect.height() - height()) / 2.0); move(m_point.x(), m_point.y() / 2); m_dTransparent = 1.0; } else { m_nDesktopHeight = (QApplication::desktop()->height() / 2 + 10); int m_XPos = QApplication::desktop()->width() / 2; m_point.setX(m_XPos); m_point.setY(m_nDesktopHeight); move(m_point.x(), m_point.y() -10); m_dTransparent = 1.0; } }