93 lines
2.5 KiB
C++
93 lines
2.5 KiB
C++
#include "frmimgshow.h"
|
|
|
|
FrmImgShow::FrmImgShow(QString& url, QWidget *parent) : QWidget(parent)
|
|
{
|
|
initForm();
|
|
initForm();
|
|
initManager();
|
|
this->url = url;
|
|
manager->get(QNetworkRequest(QUrl(url)));
|
|
}
|
|
|
|
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()
|
|
{
|
|
labImg = new QLabel();
|
|
btnCopy = new QToolButton();
|
|
btnDelete = new QToolButton();
|
|
horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
|
|
hLayout = new QHBoxLayout();
|
|
vLayout = new QVBoxLayout();
|
|
|
|
hLayout->addWidget(btnCopy);
|
|
hLayout->addSpacerItem(horizenSpacer);
|
|
vLayout->addWidget(labImg);
|
|
vLayout->addLayout(hLayout);
|
|
this->setLayout(vLayout);
|
|
|
|
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);
|
|
}
|
|
|
|
void FrmImgShow::initWidget()
|
|
{
|
|
btnCopy->installEventFilter(this);
|
|
btnDelete->installEventFilter(this);
|
|
}
|
|
|
|
void FrmImgShow::initManager()
|
|
{
|
|
manager = new QNetworkAccessManager();
|
|
QClipboard* clipboard = QGuiApplication::clipboard();
|
|
connect(manager, &QNetworkAccessManager::finished,
|
|
this, &FrmImgShow::onFinished);
|
|
|
|
connect(btnCopy, &QToolButton::clicked, [&](){
|
|
clipboard->setText(this->url);
|
|
});
|
|
}
|