#include "frmimgshow.h" #include "frmalbum.h" FrmImgShow::FrmImgShow(QWidget *parent) : QWidget(parent) { initForm(); initSignalSlot(); connect(TCHttpService::getInstance(), &TCHttpService::signal_imageDownloaded, this, [this](const QString& requestId, const QPixmap& pixmap){ if (requestId == m_requestId) { // setLoadingState(false); qDebug() << "load success"; setImage(pixmap); } }); connect(TCHttpService::getInstance(), &TCHttpService::signal_downloadFailed, this, [this](const QString& requestId, const QString& error){ if (requestId == m_requestId) { qDebug() << "load failed"; } }); } void FrmImgShow::loadImage(const QUrl &imageUrl) { qDebug() << "loadImage"; m_currentUrl = imageUrl; m_requestId = QUuid::createUuid().toString(); TCHttpService::getInstance()->downloadImage(m_requestId, imageUrl); } void FrmImgShow::setImage(const QPixmap &pixmap) { // 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) { } void FrmImgShow::initSignalSlot() { connect(btnCopy, &QPushButton::clicked, [this](){ switch(FrmAlbum::getCopyType()) { case 0: { QClipboard* clipboard = QApplication::clipboard(); QString mdStr = QString("![](%1)").arg(m_currentUrl.toString()); clipboard->setText(mdStr); break; } case 1: { QClipboard* clipboard = QApplication::clipboard(); QString urlStr = m_currentUrl.toString(); clipboard->setText(urlStr); break; } case 2: { QClipboard* clipboard = QApplication::clipboard(); QString htmlStr = QString("").arg(m_currentUrl.toString()); clipboard->setText(htmlStr); break; } case 3: { QClipboard* clipboard = QApplication::clipboard(); QString ubbStr = QString("[IMG]%1[/IMG]").arg(m_currentUrl.toString()); clipboard->setText(ubbStr); break; } } }); connect(ckbSelect, &QCheckBox::checkStateChanged, [this](Qt::CheckState state){ if (state == Qt::Unchecked) { emit signal_imageUnselected(m_currentUrl.toString()); } if (state == Qt::Checked) { emit signal_imageSelected(m_currentUrl.toString()); } }); } 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->setCursor(Qt::PointingHandCursor); btnCopy->installEventFilter(this); btnDelete = new QPushButton(); btnDelete->setMinimumSize(22, 22); btnDelete->setFlat(true); btnDelete->setIcon(QIcon(":/qrc/image/delete_white.png")); btnDelete->installEventFilter(this); btnDelete->setCursor(Qt::PointingHandCursor); horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); hLayout = new QHBoxLayout(); ckbSelect = new QCheckBox(); ckbSelect->setText(""); ckbSelect->setMinimumSize(20, 20); ckbSelect->setCursor(Qt::PointingHandCursor); // ckbSelect->setStyleSheet("border:1px solid white;border-radius:5px"); // ckbSelect->setStyleSheet("border-style:none;background-color:green;spacing:0px;"); 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"); setFixedSize(134, 160); this->labImg->setMinimumSize(130, 130); } void FrmImgShow::initWidget() { btnCopy->installEventFilter(this); btnDelete->installEventFilter(this); }