#include "BackgroundWidget.h" #include "MainWindow.h" #include #include #include #include #include #include BackgroundWidget::BackgroundWidget(QWidget *parent) : MovieWidget(parent) { InitImages(); //m_display = new QLabel(this); //QHBoxLayout* layout = new QHBoxLayout(this); // 创建水平布局管理器 //layout->addWidget(m_display); // 将标签添加到布局中 //layout->setContentsMargins(0, 0, 0, 0); //m_display->setAlignment(Qt::AlignCenter); } void BackgroundWidget::OnTimeout() { if (m_pixmapPaths.isEmpty()) { return; } if (m_pixmaps.count() < m_pixmapPaths.count()) { QPixmap pixmap(m_pixmapPaths[m_current]); // 获取文件的绝对路径 const QPixmap& px = m_pixmaps.emplace_back(std::move(pixmap)); if (width() != px.width()) { MainWindow::Get().setGeometry(0, 30, px.width(), height()); } } m_current = (m_current + 1) % m_pixmaps.size(); update(); //m_display->setPixmap(m_pixmaps[m_current]); //label.setPixmap(pixmap.scaled(label.size(), Qt::KeepAspectRatio)); } void BackgroundWidget::InitImages() { const QString imageDir = QApplication::applicationDirPath() + "/ProjectDisplay/background"; QStringList jpgFiles; QDir dir(imageDir); QStringList filters; filters << "*.jpg"; // 添加 JPG 的文件扩展名 QFileInfoList fileInfoList = dir.entryInfoList(filters, QDir::Files); // 使用过滤器获取文件列表 foreach(const QFileInfo & fileInfo, fileInfoList) { m_pixmapPaths.append(fileInfo.absoluteFilePath()); } } void BackgroundWidget::resizeEvent(QResizeEvent* event) { MovieWidget::resizeEvent(event); //m_display->setPixmap(label.pixmap()->scaled(label.size(), Qt::KeepAspectRatio)); // 图片大小适应标签大 } void BackgroundWidget::paintEvent(QPaintEvent* evnet) { if (m_pixmaps.isEmpty()) { return; } int imageHeight = m_pixmaps[m_current].height(); int y = fabs(height() - imageHeight) * 0.5; QPainter painter(this); painter.drawPixmap(0, y, m_pixmaps[m_current]); }