#include "frmimgshow.h" FrmImgShow::FrmImgShow(QWidget *parent) : QWidget(parent) { initForm(); connect(TCHttpService::getInstance(), &TCHttpService::signal_imageDownloaded, this, [this](const QString& requestId, const QPixmap& pixmap){ if (requestId == m_requestId) { setLoadingState(false); setImage(pixmap); } }); connect(TCHttpService::getInstance(), &TCHttpService::signal_downloadFailed, this, [this](const QString& requestId, const QString& error){ if (requestId == m_requestId) { setLoadingState(true); } }); } void FrmImgShow::loadImage(const QUrl &imageUrl) { qDebug() << "loadImage"; m_currentUrl = imageUrl; m_requestId = QUuid::createUuid().toString(); setLoadingState(true); qDebug() << "downlaodImage"; TCHttpService::getInstance()->downloadImage(m_requestId, imageUrl); } void FrmImgShow::setImage(const QPixmap &pixmap) { qDebug() << "setImage"; // int h = pixmap.height(); // int w = pixmap.width(); // int sh, sw; // if (h >= w) { // sh = 140; // sw = w * h / 140; // } // else { // sw = 140; // sh = h * w /140; // } labImg->setPixmap(pixmap.scaled(this->labImg->width(), this->labImg->height())); } void FrmImgShow::setLoadingState(bool loading) { } QSize FrmImgShow::sizeHint() { return QSize(300, 300); } bool FrmImgShow::eventFilter(QObject *watched, QEvent *event) { if (watched == btnCopy) { if (event->type() == QEvent::Enter) { btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_blue.png"))); return true; } else if (event->type() == QEvent::Leave) { btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png"))); return true; } else { return false; } } if (watched == btnDelete) { if (event->type() == QEvent::Enter) { btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_red.png"))); return true; } else if (event->type() == QEvent::Leave) { btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png"))); return true; } else { return false; } } return QWidget::eventFilter(watched, event); } void FrmImgShow::onFinished(QNetworkReply *reply) { if (reply->error() == QNetworkReply::NoError) { QByteArray imageData = reply->readAll(); QPixmap pix; pix.loadFromData(imageData); this->labImg->setPixmap(pix); } } void FrmImgShow::initForm() { this->setWindowFlag(Qt::FramelessWindowHint); this->setWindowFlags(this->windowFlags() | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); setAttribute(Qt::WA_TranslucentBackground); vLayout = new QVBoxLayout(this); setLayout(vLayout); labImg = new QLabel(); btnCopy = new QPushButton(); btnCopy->setMinimumSize(22, 22); btnCopy->setFlat(true); btnCopy->setIcon(QIcon(":/qrc/image/copy_white.png")); btnCopy->installEventFilter(this); btnDelete = new QPushButton(); btnDelete->setMinimumSize(22, 22); btnDelete->setFlat(true); btnDelete->setIcon(QIcon(":/qrc/image/delete_white.png")); btnDelete->installEventFilter(this); horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); hLayout = new QHBoxLayout(); ckbSelect = new QCheckBox(); // ckbSelect->setMinimumSize(20, 20); // ckbSelect->setStyleSheet("border:1px solid white;border-radius:5px"); ckbSelect->setStyleSheet("border-style:none;"); hLayout->addWidget(btnCopy); hLayout->addWidget(btnDelete); hLayout->setContentsMargins(0, 0, 0, 0); hLayout->addSpacerItem(horizenSpacer); hLayout->addWidget(ckbSelect); hLayout->setSpacing(0); vLayout->addWidget(labImg); vLayout->addLayout(hLayout); vLayout->setContentsMargins(0, 0, 0, 0); // btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png"))); // btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png"))); // btnCopy->setFixedSize(32, 32); // btnCopy->setCursor(Qt::PointingHandCursor); // setStyleSheet("background-color: #FF0000;border: 1px solid white"); setFixedSize(134, 160); this->labImg->setMinimumSize(130, 130); } void FrmImgShow::initWidget() { // btnCopy->installEventFilter(this); // btnDelete->installEventFilter(this); }