frmimgshow.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #include "frmimgshow.h"
  2. FrmImgShow::FrmImgShow(QWidget *parent) : QWidget(parent)
  3. {
  4. initForm();
  5. connect(TCHttpService::getInstance(), &TCHttpService::signal_imageDownloaded,
  6. this, [this](const QString& requestId, const QPixmap& pixmap){
  7. if (requestId == m_requestId) {
  8. setLoadingState(false);
  9. setImage(pixmap);
  10. }
  11. });
  12. connect(TCHttpService::getInstance(), &TCHttpService::signal_downloadFailed,
  13. this, [this](const QString& requestId, const QString& error){
  14. if (requestId == m_requestId) {
  15. setLoadingState(true);
  16. }
  17. });
  18. }
  19. void FrmImgShow::loadImage(const QUrl &imageUrl)
  20. {
  21. qDebug() << "loadImage";
  22. m_currentUrl = imageUrl;
  23. m_requestId = QUuid::createUuid().toString();
  24. setLoadingState(true);
  25. qDebug() << "downlaodImage";
  26. TCHttpService::getInstance()->downloadImage(m_requestId, imageUrl);
  27. }
  28. void FrmImgShow::setImage(const QPixmap &pixmap)
  29. {
  30. qDebug() << "setImage";
  31. labImg->setPixmap(pixmap.scaled(200, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation));
  32. }
  33. void FrmImgShow::setLoadingState(bool loading)
  34. {
  35. }
  36. QSize FrmImgShow::sizeHint()
  37. {
  38. return QSize(300, 300);
  39. }
  40. // bool FrmImgShow::eventFilter(QObject *watched, QEvent *event)
  41. // {
  42. // if (watched == btnCopy) {
  43. // if (event->type() == QEvent::Enter) {
  44. // btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_blue.png")));
  45. // return true;
  46. // }
  47. // else if (event->type() == QEvent::Leave) {
  48. // btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
  49. // return true;
  50. // }
  51. // else {
  52. // return false;
  53. // }
  54. // }
  55. // if (watched == btnDelete) {
  56. // if (event->type() == QEvent::Enter) {
  57. // btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_red.png")));
  58. // return true;
  59. // }
  60. // else if (event->type() == QEvent::Leave) {
  61. // btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
  62. // return true;
  63. // }
  64. // else {
  65. // return false;
  66. // }
  67. // }
  68. // return QWidget::eventFilter(watched, event);
  69. // }
  70. void FrmImgShow::onFinished(QNetworkReply *reply)
  71. {
  72. if (reply->error() == QNetworkReply::NoError) {
  73. QByteArray imageData = reply->readAll();
  74. QPixmap pix;
  75. pix.loadFromData(imageData);
  76. this->labImg->setPixmap(pix);
  77. }
  78. }
  79. void FrmImgShow::initForm()
  80. {
  81. labImg = new QLabel(this);
  82. // btnCopy = new QPushButton(this);
  83. // btnCopy->setMaximumHeight(18);
  84. // btnDelete = new QPushButton(this);
  85. // btnDelete->setMaximumHeight(18);
  86. // horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
  87. // hLayout = new QHBoxLayout();
  88. // ckbSelect = new QCheckBox(this);
  89. // ckbSelect->setMaximumHeight(18);
  90. // hLayout->addWidget(btnCopy);
  91. // hLayout->addWidget(btnDelete);
  92. // hLayout->setContentsMargins(0, 0, 0, 0);
  93. // hLayout->addSpacerItem(horizenSpacer);
  94. // hLayout->addWidget(ckbSelect);
  95. vLayout = new QVBoxLayout();
  96. vLayout->addWidget(labImg);
  97. // vLayout->addLayout(hLayout);
  98. vLayout->setContentsMargins(0, 0, 0, 0);
  99. // vLayout->addLayout(vLayout);
  100. this->setLayout(vLayout);
  101. // btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
  102. // btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
  103. // btnCopy->setFixedSize(32, 32);
  104. // btnCopy->setCursor(Qt::PointingHandCursor);
  105. setStyleSheet("background-color: #FF0000;border: 1px solid white");
  106. setFixedSize(140, 160);
  107. this->labImg->setFixedSize(140, 140);
  108. }
  109. void FrmImgShow::initWidget()
  110. {
  111. // btnCopy->installEventFilter(this);
  112. // btnDelete->installEventFilter(this);
  113. }