有个不必现错误,预览初步完成

This commit is contained in:
2025-03-25 18:35:28 +08:00
parent c84b88a422
commit d86f80982d
25 changed files with 967 additions and 393 deletions

View File

@@ -1,47 +1,84 @@
#include "frmimgshow.h"
FrmImgShow::FrmImgShow(QString& url, QWidget *parent) : QWidget(parent)
FrmImgShow::FrmImgShow(QWidget *parent) : QWidget(parent)
{
initForm();
initForm();
initManager();
this->url = url;
manager->get(QNetworkRequest(QUrl(url)));
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);
}
});
}
bool FrmImgShow::eventFilter(QObject *watched, QEvent *event)
void FrmImgShow::loadImage(const QUrl &imageUrl)
{
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);
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";
labImg->setPixmap(pixmap.scaled(200, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation));
}
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) {
@@ -54,39 +91,43 @@ void FrmImgShow::onFinished(QNetworkReply *reply)
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();
labImg = new QLabel(this);
// btnCopy = new QPushButton(this);
// btnCopy->setMaximumHeight(18);
// btnDelete = new QPushButton(this);
// btnDelete->setMaximumHeight(18);
// horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
// hLayout = new QHBoxLayout();
hLayout->addWidget(btnCopy);
hLayout->addSpacerItem(horizenSpacer);
// ckbSelect = new QCheckBox(this);
// ckbSelect->setMaximumHeight(18);
// hLayout->addWidget(btnCopy);
// hLayout->addWidget(btnDelete);
// hLayout->setContentsMargins(0, 0, 0, 0);
// hLayout->addSpacerItem(horizenSpacer);
// hLayout->addWidget(ckbSelect);
vLayout = new QVBoxLayout();
vLayout->addWidget(labImg);
vLayout->addLayout(hLayout);
// vLayout->addLayout(hLayout);
vLayout->setContentsMargins(0, 0, 0, 0);
// vLayout->addLayout(vLayout);
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);
// 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(140, 160);
this->labImg->setFixedSize(140, 140);
}
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);
});
// btnCopy->installEventFilter(this);
// btnDelete->installEventFilter(this);
}