#include "JMessageDlg.h" #include "ui_JMessageDlg.h" #include #include #include #include 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(); }