frmimgshow.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #include "frmimgshow.h"
  2. FrmImgShow::FrmImgShow(QString& url, QWidget *parent) : QWidget(parent)
  3. {
  4. initForm();
  5. initForm();
  6. initManager();
  7. this->url = url;
  8. manager->get(QNetworkRequest(QUrl(url)));
  9. }
  10. bool FrmImgShow::eventFilter(QObject *watched, QEvent *event)
  11. {
  12. if (watched == btnCopy) {
  13. if (event->type() == QEvent::Enter) {
  14. btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_blue.png")));
  15. return true;
  16. }
  17. else if (event->type() == QEvent::Leave) {
  18. btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
  19. return true;
  20. }
  21. else {
  22. return false;
  23. }
  24. }
  25. if (watched == btnDelete) {
  26. if (event->type() == QEvent::Enter) {
  27. btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_red.png")));
  28. return true;
  29. }
  30. else if (event->type() == QEvent::Leave) {
  31. btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
  32. return true;
  33. }
  34. else {
  35. return false;
  36. }
  37. }
  38. return QWidget::eventFilter(watched, event);
  39. }
  40. void FrmImgShow::onFinished(QNetworkReply *reply)
  41. {
  42. if (reply->error() == QNetworkReply::NoError) {
  43. QByteArray imageData = reply->readAll();
  44. QPixmap pix;
  45. pix.loadFromData(imageData);
  46. this->labImg->setPixmap(pix);
  47. }
  48. }
  49. void FrmImgShow::initForm()
  50. {
  51. labImg = new QLabel();
  52. btnCopy = new QToolButton();
  53. btnDelete = new QToolButton();
  54. horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
  55. hLayout = new QHBoxLayout();
  56. vLayout = new QVBoxLayout();
  57. hLayout->addWidget(btnCopy);
  58. hLayout->addSpacerItem(horizenSpacer);
  59. vLayout->addWidget(labImg);
  60. vLayout->addLayout(hLayout);
  61. this->setLayout(vLayout);
  62. btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
  63. btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
  64. btnCopy->setFixedSize(32, 32);
  65. btnCopy->setCursor(Qt::PointingHandCursor);
  66. }
  67. void FrmImgShow::initWidget()
  68. {
  69. btnCopy->installEventFilter(this);
  70. btnDelete->installEventFilter(this);
  71. }
  72. void FrmImgShow::initManager()
  73. {
  74. manager = new QNetworkAccessManager();
  75. QClipboard* clipboard = QGuiApplication::clipboard();
  76. connect(manager, &QNetworkAccessManager::finished,
  77. this, &FrmImgShow::onFinished);
  78. connect(btnCopy, &QToolButton::clicked, [&](){
  79. clipboard->setText(this->url);
  80. });
  81. }