123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #include "JMessageDlg.h"
- #include "ui_JMessageDlg.h"
- #include <QPainter>
- #include <QPainterPath>
- #include <QMouseEvent>
- #include <QApplication>
- JMessageDlg::JMessageDlg(QWidget *parent)
- : QDialog(parent)
- , ui(new Ui::JMessageDlg),
- m_dragging(false),
- m_cornerRadius(15),
- m_backgroundColor(240, 240, 240)
- {
- ui->setupUi(this);
- setWindowFlags(Qt::FramelessWindowHint);
- setAttribute(Qt::WA_TranslucentBackground);
- ui->textLabel->setWordWrap(true);
- }
- JMessageDlg::~JMessageDlg()
- {
- delete ui;
- }
- void JMessageDlg::SetTip(const QString& title,const QString& text, MSG_TYPE type/*= MSG_TYPE::question*/)
- {
- ui->bgTitleLabel->setText(title);
- ui->textLabel->setText(text);
- QString strType = R"(border-image: url()";
- switch (type)
- {
- case question:
- strType += ":/images/Mess/Mess_tip.png";
- break;
- default:
- break;
- }
- strType += ");";
- ui->lmageLable->setStyleSheet(strType);
- //border-image: url(:/images/Mess/Mess_tip.png);
- }
- void JMessageDlg::paintEvent(QPaintEvent *event)
- {
- Q_UNUSED(event);
- QPainter painter(this);
- painter.setRenderHint(QPainter::Antialiasing);
- painter.setRenderHint(QPainter::SmoothPixmapTransform);
- QPainterPath path;
- path.addRoundedRect(rect(), m_cornerRadius, m_cornerRadius);
- painter.setClipPath(path);
- painter.fillPath(path, m_backgroundColor);
- // 或者你可以绘制图片作为背景
- // QPixmap bgPixmap(":/path/to/your/image.png"); // 替换为你的图片路径
- // painter.drawPixmap(rect(), bgPixmap);
- QPen borderPen(Qt::lightGray);
- borderPen.setWidth(1);
- painter.setPen(borderPen);
- painter.setBrush(Qt::NoBrush);
- painter.drawPath(path);
- QDialog::paintEvent(event);
- }
- void JMessageDlg::mousePressEvent(QMouseEvent *event)
- {
- if (event->button() == Qt::LeftButton)
- {
- m_dragging = true;
- m_dragPosition = event->globalPos() - frameGeometry().topLeft();
- event->accept();
- }
- QDialog::mousePressEvent(event);
- }
- void JMessageDlg::mouseMoveEvent(QMouseEvent *event)
- {
- if (m_dragging && (event->buttons() & Qt::LeftButton))
- {
- move(event->globalPos() - m_dragPosition);
- event->accept();
- }
- QDialog::mouseMoveEvent(event);
- }
- void JMessageDlg::mouseReleaseEvent(QMouseEvent *event)
- {
- Q_UNUSED(event);
- m_dragging = false;
- QDialog::mouseReleaseEvent(event);
- }
- void JMessageDlg::on_closeBut_clicked()
- {
- m_ret = QMessageBox::No;
- this->close();
- }
- void JMessageDlg::on_yesBut_clicked()
- {
- m_ret = QMessageBox::Yes;
- this->close();
- }
- void JMessageDlg::on_noBut_clicked()
- {
- m_ret = QMessageBox::No;
- this->close();
- }
|