#include "custommessagebox.h" #include "ui_custommessagebox.h" #include "commonhelper.h" CustomMessageBox::CustomMessageBox(QWidget* parent) : QDialog(parent), ui(new Ui::CustomMessageBox) { ui->setupUi(this); this->mousePressed = false; //设置窗体标题栏隐藏 this->setWindowFlags(Qt::FramelessWindowHint); //设置窗体关闭时自动释放内存 this->setAttribute(Qt::WA_DeleteOnClose); //关联关闭按钮 connect(ui->btnCloseMenu, SIGNAL(clicked()), this, SLOT(close())); connect(ui->btnCancel, SIGNAL(clicked()), this, SLOT(close())); //窗体居中显示 CommonHelper::FormInCenter(this); ui->lblTitle->installEventFilter(this); } CustomMessageBox::~CustomMessageBox() { delete ui; } void CustomMessageBox::SetMessage(const QString& msg, int type, const QString& title) { if (type == 0) { ui->labIcoMain->setStyleSheet("border-image: url(:/skin/image/blue/ok.png);"); ui->btnCancel->setVisible(false); ui->lblTitle->setText(title); } else if (type == 1) { ui->labIcoMain->setStyleSheet("border-image: url(:/skin/image/blue/question.png);"); ui->lblTitle->setText(title); } else if (type == 2) { ui->labIcoMain->setStyleSheet("border-image: url(:/skin/image/blue/error.png);"); ui->btnCancel->setVisible(false); ui->lblTitle->setText(title); } else if (type == 3) { ui->labIcoMain->setStyleSheet("border-image: url(:/skin/image/blue/info.png);"); ui->btnCancel->setVisible(false); ui->lblTitle->setText(title); } ui->labInfo->setText(msg); } bool CustomMessageBox::eventFilter(QObject* obj, QEvent* event) { if (ui->lblTitle == obj) { if (event->type() == QEvent::MouseButtonPress) { QMouseEvent* mouseEvent = dynamic_cast(event); if (mouseEvent->button() == Qt::LeftButton) { mousePressed = true; mousePoint = mouseEvent->globalPos() - pos(); mouseEvent->accept(); return true; } } else if (event->type() == QEvent::MouseMove) { QMouseEvent* mouseEvent = dynamic_cast(event); if (mousePressed && this->windowState() != Qt::WindowMaximized) { if (mouseEvent->globalY() <= qApp->desktop()->availableGeometry().bottom()) { move(mouseEvent->globalPos() - mousePoint); mouseEvent->accept(); } else { qApp->desktop()->cursor().setPos( qApp->desktop()->cursor().pos().x(), qApp->desktop()->availableGeometry().bottom() ); } return true; } } else if (event->type() == QEvent::MouseButtonRelease) { QMouseEvent* mouseEvent = dynamic_cast(event); if (mouseEvent->button() == Qt::LeftButton) { mousePressed = false; mouseEvent->accept(); return true; } } } return QObject::eventFilter(obj, event); } void CustomMessageBox::on_btnOk_clicked() { done(1); this->close(); }