下面是一个使用Qt的QWidget显示图片并添加滚动条的示例代码:
#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QScrollBar>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建主窗口和布局
QWidget window;
QVBoxLayout *layout = new QVBoxLayout(&window);
// 创建标签用于显示图片
QLabel *imageLabel = new QLabel(&window);
QPixmap image(":/path/to/image.png");
imageLabel->setPixmap(image);
layout->addWidget(imageLabel);
// 创建滚动条用于切换图片
QScrollBar *scrollBar = new QScrollBar(Qt::Vertical, &window);
scrollBar->setRange(0, 4); // 假设有5张图片,编号从0到4
scrollBar->setPageStep(1); // 每次滚动一张图片
layout->addWidget(scrollBar);
QObject::connect(scrollBar, &QScrollBar::valueChanged,
[=](int value) {
QPixmap newImage(QString(":/path/to/image_%1.png").arg(value));
imageLabel->setPixmap(newImage);
});
window.show();
return app.exec();
}
在上述代码中,我们首先创建了一个QWidget对象window
作为主窗口,并使用垂直布局layout
将标签和滚动条添加进去。然后,我们创建一个QLabel对象imageLabel
用于显示图片,并将其添加到布局中。接着,我们创建一个QScrollBar对象scrollBar
用于切换显示的图片,并设置其范围和步长。注意,在该示例中,我们假设有5张图片,编号从0到4。最后,我们使用QObject::connect()
函数将滚动条的valueChanged信号连接到一个lambda表达式上,每当滚动条的值发生变化时就会调用这个lambda表达式来更新显示的图片。