qt 用scorllarea显示图片,电子相册,实例代码
时间: 2024-04-14 16:27:51 浏览: 86
下面是一个使用Qt的QScrollArea来显示图片的简单示例代码,可以实现一个电子相册的效果:
```cpp
#include <QtWidgets>
class PhotoAlbum : public QMainWindow
{
public:
PhotoAlbum(QWidget *parent = nullptr) : QMainWindow(parent)
{
// 创建滚动区域和布局
scrollArea = new QScrollArea(this);
scrollArea->setWidgetResizable(true);
setCentralWidget(scrollArea);
photosLayout = new QVBoxLayout();
photosLayout->setAlignment(Qt::AlignTop);
photosLayout->setSpacing(10);
// 添加图片
addPhoto("photo1.jpg");
addPhoto("photo2.jpg");
addPhoto("photo3.jpg");
}
private:
void addPhoto(const QString &filename)
{
// 创建 QLabel 用于显示图片
QLabel *label = new QLabel(this);
QPixmap pixmap(filename);
label->setPixmap(pixmap.scaledToWidth(400)); // 缩放图片宽度为400
// 将 QLabel 添加到布局中
photosLayout->addWidget(label);
// 更新滚动区域的大小
QWidget *widget = new QWidget(this);
widget->setLayout(photosLayout);
scrollArea->setWidget(widget);
}
QScrollArea *scrollArea;
QVBoxLayout *photosLayout;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
PhotoAlbum album;
album.show();
return a.exec();
}
```
在这个示例中,我们创建了一个名为`PhotoAlbum`的自定义窗口,并使用`QScrollArea`来实现滚动区域。在构造函数中,我们创建了一个`QScrollArea`和一个垂直布局`QVBoxLayout`,并将布局设置给滚动区域。然后,我们通过`addPhoto`函数添加图片,它创建一个`QLabel`用于显示图片,并将其添加到布局中。最后,我们将布局设置为滚动区域的内容,并在`main`函数中显示相册窗口。
请注意,您需要将示例代码中的图片文件名替换为您自己的图片文件。希望对您有所帮助!如果有任何疑问,请随时提问。
阅读全文