warning.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include "warning.h"
  2. #include "ui_warning.h"
  3. #include <QPainter>
  4. #include <QLayout>
  5. #include <QDebug>
  6. #include <QFile>
  7. #include <QMouseEvent>
  8. #include "oneshadow.h"
  9. Warning::Warning(QWidget *parent) :
  10. QDialog(parent),
  11. ui(new Ui::Warning)
  12. {
  13. ui->setupUi(this);
  14. /* 加载qss */
  15. QFile fileQss(":/qss/warning/warning_dark.qss");
  16. if(fileQss.open(QFile::ReadOnly))
  17. {
  18. QString qss = fileQss.readAll();
  19. this->setStyleSheet(qss);
  20. fileQss.close();
  21. } else
  22. {
  23. qDebug() << "加载QSS文件失败";
  24. }
  25. /* 设置无边框和背景透明 */
  26. this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
  27. this->setAttribute(Qt::WA_TranslucentBackground);
  28. /* 设置文字自动换行 */
  29. ui->label_Warn->setWordWrap(true);
  30. /* 阴影宽度是16 */
  31. this->layout()->setMargin(SHADOW_W);
  32. m_shadow = new OneShadow(QSize(width() - SHADOW_W*2, height() - SHADOW_W*2),SHADOW_W);
  33. connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close()));
  34. connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close()));
  35. connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok()));
  36. }
  37. Warning::~Warning()
  38. {
  39. delete ui;
  40. }
  41. void Warning::setText(const QString &text)
  42. {
  43. /* 根据文本大小设置高度 */
  44. /* 设置文本居中 */
  45. ui->label_Warn->setAlignment(Qt::AlignCenter);
  46. ui->label_Warn->setText(text);
  47. }
  48. /* 只有一个确定按钮 */
  49. void Warning::setTextWithOneButton(const QString &text)
  50. {
  51. /* 设置文本居中 */
  52. ui->label_Warn->setAlignment(Qt::AlignCenter);
  53. ui->pBtn_cancel->hide();
  54. // ui->pBtn_ok->move(ui->pBtn_cancel->x(),ui->pBtn_cancel->y());
  55. ui->label_Warn->setText(text);
  56. }
  57. void Warning::paintEvent(QPaintEvent *event)
  58. {
  59. QPainter painter(this);
  60. painter.setRenderHint(QPainter::Antialiasing);
  61. painter.drawImage(QPoint(0,0),m_shadow->image());
  62. }
  63. /* 鼠标点击事件 */
  64. void Warning::mousePressEvent(QMouseEvent *event)
  65. {
  66. m_lastPos = event->globalPos();
  67. event->accept();
  68. }
  69. /* 鼠标移动事件 */
  70. void Warning::mouseMoveEvent(QMouseEvent *event)
  71. {
  72. // auto point = ui->widget_top->mapToGlobal(QPoint(0, 0));
  73. auto point = this->mapToGlobal(QPoint(0, 0));
  74. QRect rect(point, QSize(this->width(), 60));
  75. if(!rect.contains(m_lastPos))
  76. {
  77. event->accept();
  78. return;
  79. }
  80. int dx = event->globalX() - m_lastPos.x();
  81. int dy = event->globalY() - m_lastPos.y();
  82. this->move(this->x() + dx, this->y() + dy);
  83. m_lastPos = event->globalPos();
  84. event->accept();
  85. }
  86. /* 鼠标释放事件 */
  87. void Warning::mouseReleaseEvent(QMouseEvent *event)
  88. {
  89. event->accept();
  90. }
  91. void Warning::do_ok()
  92. {
  93. emit signal_ok();
  94. m_isOk = true;
  95. this->close();
  96. }