frmimgshow.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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. // int h = pixmap.height();
  32. // int w = pixmap.width();
  33. // int sh, sw;
  34. // if (h >= w) {
  35. // sh = 140;
  36. // sw = w * h / 140;
  37. // }
  38. // else {
  39. // sw = 140;
  40. // sh = h * w /140;
  41. // }
  42. labImg->setPixmap(pixmap.scaled(this->labImg->width(), this->labImg->height()));
  43. }
  44. void FrmImgShow::setLoadingState(bool loading)
  45. {
  46. }
  47. QSize FrmImgShow::sizeHint()
  48. {
  49. return QSize(300, 300);
  50. }
  51. bool FrmImgShow::eventFilter(QObject *watched, QEvent *event)
  52. {
  53. if (watched == btnCopy) {
  54. if (event->type() == QEvent::Enter) {
  55. btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_blue.png")));
  56. return true;
  57. }
  58. else if (event->type() == QEvent::Leave) {
  59. btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
  60. return true;
  61. }
  62. else {
  63. return false;
  64. }
  65. }
  66. if (watched == btnDelete) {
  67. if (event->type() == QEvent::Enter) {
  68. btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_red.png")));
  69. return true;
  70. }
  71. else if (event->type() == QEvent::Leave) {
  72. btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
  73. return true;
  74. }
  75. else {
  76. return false;
  77. }
  78. }
  79. return QWidget::eventFilter(watched, event);
  80. }
  81. void FrmImgShow::onFinished(QNetworkReply *reply)
  82. {
  83. if (reply->error() == QNetworkReply::NoError) {
  84. QByteArray imageData = reply->readAll();
  85. QPixmap pix;
  86. pix.loadFromData(imageData);
  87. this->labImg->setPixmap(pix);
  88. }
  89. }
  90. void FrmImgShow::initForm()
  91. {
  92. this->setWindowFlag(Qt::FramelessWindowHint);
  93. this->setWindowFlags(this->windowFlags() | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
  94. setAttribute(Qt::WA_TranslucentBackground);
  95. vLayout = new QVBoxLayout(this);
  96. setLayout(vLayout);
  97. labImg = new QLabel();
  98. btnCopy = new QPushButton();
  99. btnCopy->setMinimumSize(22, 22);
  100. btnCopy->setFlat(true);
  101. btnCopy->setIcon(QIcon(":/qrc/image/copy_white.png"));
  102. btnCopy->installEventFilter(this);
  103. btnDelete = new QPushButton();
  104. btnDelete->setMinimumSize(22, 22);
  105. btnDelete->setFlat(true);
  106. btnDelete->setIcon(QIcon(":/qrc/image/delete_white.png"));
  107. btnDelete->installEventFilter(this);
  108. horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
  109. hLayout = new QHBoxLayout();
  110. ckbSelect = new QCheckBox();
  111. // ckbSelect->setMinimumSize(20, 20);
  112. // ckbSelect->setStyleSheet("border:1px solid white;border-radius:5px");
  113. ckbSelect->setStyleSheet("border-style:none;");
  114. hLayout->addWidget(btnCopy);
  115. hLayout->addWidget(btnDelete);
  116. hLayout->setContentsMargins(0, 0, 0, 0);
  117. hLayout->addSpacerItem(horizenSpacer);
  118. hLayout->addWidget(ckbSelect);
  119. hLayout->setSpacing(0);
  120. vLayout->addWidget(labImg);
  121. vLayout->addLayout(hLayout);
  122. vLayout->setContentsMargins(0, 0, 0, 0);
  123. // btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
  124. // btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
  125. // btnCopy->setFixedSize(32, 32);
  126. // btnCopy->setCursor(Qt::PointingHandCursor);
  127. // setStyleSheet("background-color: #FF0000;border: 1px solid white");
  128. setFixedSize(134, 160);
  129. this->labImg->setMinimumSize(130, 130);
  130. }
  131. void FrmImgShow::initWidget()
  132. {
  133. // btnCopy->installEventFilter(this);
  134. // btnDelete->installEventFilter(this);
  135. }