164 lines
4.4 KiB
C++
164 lines
4.4 KiB
C++
#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);
|
|
}
|