JMessageDlg.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #include "JMessageDlg.h"
  2. #include "ui_JMessageDlg.h"
  3. #include <QPainter>
  4. #include <QPainterPath>
  5. #include <QMouseEvent>
  6. #include <QApplication>
  7. JMessageDlg::JMessageDlg(QWidget *parent)
  8. : QDialog(parent)
  9. , ui(new Ui::JMessageDlg),
  10. m_dragging(false),
  11. m_cornerRadius(15),
  12. m_backgroundColor(240, 240, 240)
  13. {
  14. ui->setupUi(this);
  15. setWindowFlags(Qt::FramelessWindowHint);
  16. setAttribute(Qt::WA_TranslucentBackground);
  17. ui->textLabel->setWordWrap(true);
  18. }
  19. JMessageDlg::~JMessageDlg()
  20. {
  21. delete ui;
  22. }
  23. void JMessageDlg::SetTip(const QString& title,const QString& text, MSG_TYPE type/*= MSG_TYPE::question*/)
  24. {
  25. ui->bgTitleLabel->setText(title);
  26. ui->textLabel->setText(text);
  27. QString strType = R"(border-image: url()";
  28. switch (type)
  29. {
  30. case question:
  31. strType += ":/images/Mess/Mess_tip.png";
  32. break;
  33. default:
  34. break;
  35. }
  36. strType += ");";
  37. ui->lmageLable->setStyleSheet(strType);
  38. //border-image: url(:/images/Mess/Mess_tip.png);
  39. }
  40. void JMessageDlg::paintEvent(QPaintEvent *event)
  41. {
  42. Q_UNUSED(event);
  43. QPainter painter(this);
  44. painter.setRenderHint(QPainter::Antialiasing);
  45. painter.setRenderHint(QPainter::SmoothPixmapTransform);
  46. QPainterPath path;
  47. path.addRoundedRect(rect(), m_cornerRadius, m_cornerRadius);
  48. painter.setClipPath(path);
  49. painter.fillPath(path, m_backgroundColor);
  50. // 或者你可以绘制图片作为背景
  51. // QPixmap bgPixmap(":/path/to/your/image.png"); // 替换为你的图片路径
  52. // painter.drawPixmap(rect(), bgPixmap);
  53. QPen borderPen(Qt::lightGray);
  54. borderPen.setWidth(1);
  55. painter.setPen(borderPen);
  56. painter.setBrush(Qt::NoBrush);
  57. painter.drawPath(path);
  58. QDialog::paintEvent(event);
  59. }
  60. void JMessageDlg::mousePressEvent(QMouseEvent *event)
  61. {
  62. if (event->button() == Qt::LeftButton)
  63. {
  64. m_dragging = true;
  65. m_dragPosition = event->globalPos() - frameGeometry().topLeft();
  66. event->accept();
  67. }
  68. QDialog::mousePressEvent(event);
  69. }
  70. void JMessageDlg::mouseMoveEvent(QMouseEvent *event)
  71. {
  72. if (m_dragging && (event->buttons() & Qt::LeftButton))
  73. {
  74. move(event->globalPos() - m_dragPosition);
  75. event->accept();
  76. }
  77. QDialog::mouseMoveEvent(event);
  78. }
  79. void JMessageDlg::mouseReleaseEvent(QMouseEvent *event)
  80. {
  81. Q_UNUSED(event);
  82. m_dragging = false;
  83. QDialog::mouseReleaseEvent(event);
  84. }
  85. void JMessageDlg::on_closeBut_clicked()
  86. {
  87. m_ret = QMessageBox::No;
  88. this->close();
  89. }
  90. void JMessageDlg::on_yesBut_clicked()
  91. {
  92. m_ret = QMessageBox::Yes;
  93. this->close();
  94. }
  95. void JMessageDlg::on_noBut_clicked()
  96. {
  97. m_ret = QMessageBox::No;
  98. this->close();
  99. }