在Qt中实现可左右滑动的缩略图,可以使用QGraphicsView和QGraphicsScene来创建一个可滚动的视图区域。以下是一个简单的示例代码:
#include <QtWidgets>
class ThumbnailWidget : public QGraphicsWidget
{
public:
ThumbnailWidget(const QPixmap& pixmap, QGraphicsItem* parent = nullptr)
: QGraphicsWidget(parent), m_pixmap(pixmap)
{
setMinimumSize(100, 100);
}
protected:
void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override
{
Q_UNUSED(option)
Q_UNUSED(widget)
painter->drawPixmap(contentsRect(), m_pixmap);
}
private:
QPixmap m_pixmap;
};
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
// 设置水平滚动条策略为自动显示
view.setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
for (int i = 0; i < 10; ++i)
{
QPixmap thumbnail(QString("image_%1.png").arg(i));
auto widget = new ThumbnailWidget(thumbnail);
// 在场景中添加缩略图小部件
scene.addItem(widget);
// 设置小部件位置
widget->setPos(i * 110, 0);
// 将小部件调整为适应视图大小
widget->setParent(view.viewport());
}
view.resize(800, 120);
view.show();
return app.exec();
}
这个示例代码中创建了一个带有缩略图的QGraphicsWidget,并通过QGraphicsScene和QGraphicsView来展示。将小部件添加到场景中,并设置其位置和大小,然后将小部件的父项设置为视图的viewport以实现滑动效果。水平滚动条策略设置为自动显示。
请根据需要自行调整代码并添加更多功能。
内容由零声教学AI助手提供,问题来源于学员提问