dialog.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "dialog.h"
  2. void Dialog::setTransparency(QWidget* widget) {
  3. QScreen* screen = widget->screen();
  4. QRect widgetGeometry = widget->geometry();
  5. QPixmap pixmap = screen->grabWindow(0,
  6. widgetGeometry.x(),
  7. widgetGeometry.y(),
  8. widgetGeometry.width(),
  9. widgetGeometry.height());
  10. QGraphicsBlurEffect* blurEffect = new QGraphicsBlurEffect();
  11. blurEffect->setBlurRadius(15);
  12. blurEffect->setBlurHints(QGraphicsBlurEffect::QualityHint);
  13. QGraphicsScene* scene = new QGraphicsScene();
  14. QGraphicsPixmapItem item;
  15. item.setPixmap(pixmap);
  16. item.setGraphicsEffect(blurEffect);
  17. scene->addItem(&item);
  18. QImage res(QSize(widgetGeometry.width(), widgetGeometry.height()),
  19. QImage::Format_ARGB32);
  20. res.fill(Qt::transparent);
  21. QPainter ptr(&res);
  22. scene->render(&ptr, QRectF(), QRectF(0, 0, widgetGeometry.width(),
  23. widgetGeometry.height()));
  24. QPalette palette;
  25. palette.setBrush(widget->backgroundRole(),
  26. QBrush(QPixmap::fromImage(res)));
  27. widget->setPalette(palette);
  28. }
  29. void Dialog::setWindowGeometry() {
  30. QScreen* screen = this->screen();
  31. QRect geometry = screen->geometry();
  32. int width = 500, height = 350;
  33. int x = (geometry.width() - width) / 2;
  34. int y = (geometry.height() - height) / 2;
  35. this->setGeometry(x, y, width, height);
  36. }
  37. Dialog::Dialog(QJsonObject* cfgObj, QString title, QString iconName) : Pane(nullptr,
  38. cfgObj,
  39. title,
  40. iconName) {
  41. }