c++ QSlider控制一个QGraphicsView的缩放,内绘制两个矩形

在C++中使用Qt框架,你可以通过QSlider控件来控制QGraphicsView的缩放,并在QGraphicsView中绘制两个矩形。以下是一个简单的示例代码,展示了如何实现这个功能。

首先,确保你已经安装了Qt,并创建了一个新的Qt Widgets应用程序。然后,你可以按照以下步骤来实现这个功能。

头文件(例如:mainwidget.h)

#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QSlider>
#include <QVBoxLayout>

class MainWidget : public QWidget
{
    Q_OBJECT

public:
    MainWidget(QWidget *parent = nullptr);

private slots:
    void onSliderValueChanged(int value);

private:
    QGraphicsView *view;
    QGraphicsScene *scene;
    QSlider *slider;
};

#endif // MAINWIDGET_H

源文件(例如:mainwidget.cpp)

#include "mainwidget.h"
#include <QGraphicsRectItem>

MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
{
    // 创建 QGraphicsScene 和 QGraphicsView
    scene = new QGraphicsScene(this);
    view = new QGraphicsView(scene, this);

    // 在场景中添加两个矩形
    scene->addItem(new QGraphicsRectItem(0, 0, 100, 100));
    scene->addItem(new QGraphicsRectItem(200, 200, 100, 100));

    // 创建 QSlider
    slider = new QSlider(Qt::Horizontal, this);
    slider->setRange(10, 400); // 设置缩放范围
    slider->setValue(100); // 设置初始缩放值

    // 连接 QSlider 的 valueChanged 信号到槽函数
    connect(slider, &QSlider::valueChanged, this, &MainWidget::onSliderValueChanged);

    // 创建布局并添加 widget
    QVBoxLayout *layout = new QVBoxLayout(this);
    layout->addWidget(view);
    layout->addWidget(slider);

    setLayout(layout);
}

void MainWidget::onSliderValueChanged(int value)
{
    // 根据 slider 的值缩放 view
    view->resetTransform(); // 先重置当前的 transform
    view->scale(value / 100.0, value / 100.0);
}

主文件(例如:main.cpp)

#include <QApplication>
#include "mainwidget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWidget w;
    w.show();
    return a.exec();
}

运行结果 

解释

  1. MainWidget 类
    • 创建了一个 QGraphicsScene 和一个 QGraphicsView,并在场景中添加了两个矩形。
    • 创建了一个水平 QSlider,范围设置为 10 到 400,初始值设置为 100。
    • 将 QSlider 的 valueChanged 信号连接到槽函数 onSliderValueChanged
  2. onSliderValueChanged 槽函数
    • 每次滑块值改变时调用此函数。
    • 先重置 QGraphicsView 的当前变换,然后根据滑块的值进行缩放。滑块的值除以 100.0 转换为缩放比例。
  3. 布局
    • 使用 QVBoxLayout 布局管理器,将 QGraphicsView 和 QSlider 添加到布局中。

编译并运行这个程序,你会看到一个包含两个矩形的 QGraphicsView,并且可以通过拖动滑块来缩放视图。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值