设计一个电子相册,点击上一张,切换到上一张图片,点击下一张,切换到下一张图片。 要求:图片的展示可以循环,图片路径使用QList<QString>存储
时间: 2024-04-14 16:26:36 浏览: 122
以下是一个简单的设计示例,展示如何在Qt中实现电子相册的功能:
```cpp
#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QHBoxLayout>
#include <QList>
class PhotoAlbum : public QWidget
{
Q_OBJECT
public:
PhotoAlbum(QWidget *parent = nullptr) : QWidget(parent)
{
// 图片路径列表
images << "path/to/image1.jpg" << "path/to/image2.jpg" << "path/to/image3.jpg";
// 创建标签用于显示图片
photoLabel = new QLabel(this);
photoLabel->setAlignment(Qt::AlignCenter);
// 创建按钮
previousButton = new QPushButton("上一张", this);
nextButton = new QPushButton("下一张", this);
// 按钮点击事件连接到槽函数
connect(previousButton, &QPushButton::clicked, this, &PhotoAlbum::showPreviousPhoto);
connect(nextButton, &QPushButton::clicked, this, &PhotoAlbum::showNextPhoto);
// 创建水平布局,并添加标签和按钮
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(previousButton);
layout->addWidget(photoLabel);
layout->addWidget(nextButton);
// 设置主布局
setLayout(layout);
// 显示第一张图片
currentIndex = 0;
showPhoto(currentIndex);
}
private slots:
void showPreviousPhoto()
{
currentIndex--;
if (currentIndex < 0)
currentIndex = images.size() - 1;
showPhoto(currentIndex);
}
void showNextPhoto()
{
currentIndex++;
if (currentIndex >= images.size())
currentIndex = 0;
showPhoto(currentIndex);
}
private:
void showPhoto(int index)
{
// 加载并显示指定索引的图片
QPixmap pixmap(images[index]);
photoLabel->setPixmap(pixmap.scaled(photoLabel->size(), Qt::KeepAspectRatio));
}
QList<QString> images;
QLabel *photoLabel;
QPushButton *previousButton;
QPushButton *nextButton;
int currentIndex;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
PhotoAlbum album;
album.show();
return a.exec();
}
```
在这个示例中,我们创建了一个名为`PhotoAlbum`的自定义窗口部件,其中包含了一个用于显示图片的标签`photoLabel`,以及两个按钮`previousButton`和`nextButton`。通过点击按钮,可以切换到上一张或下一张图片。
图片路径列表存储在`images`中,初始时将索引设置为0,即显示第一张图片。在按钮的点击事件槽函数中,根据当前索引切换到相应的图片,并将其显示在标签中。
注意,你需要将示例代码中的图片路径替换为你自己的图片路径。
阅读全文