使用 QGraphicsView 方法 Scene() 分配 QGraphicsScene 变量

Posted

技术标签:

【中文标题】使用 QGraphicsView 方法 Scene() 分配 QGraphicsScene 变量【英文标题】:Using the QGraphicsView Method Scene() to Assign a QGraphicsScene Variable 【发布时间】:2017-08-08 03:37:57 【问题描述】:

如果我一开始就想使用QGraphicsView::scene(),语法会是什么样子?我的目标是使用滑块在我的图形视图对象中更改pixmap 的比例。我想使用QgraphicsView::scene()QScene::itemsAt() 等找到原始的pixmap,然后使用QPixmap::scaled()(我发现这是确保我为pixmap 设置的化妆品属性为真的唯一方法)。但是我遇到了QGraphicsView::scene() 的语法问题。我的尝试如下。我还在为上下文创建一个 Qt 小部件应用程序。

QGraphicsViewScene graphicsScene = ui->PixmapView->scene();
QGraphicsPixmapItem graphicsPixmapItem = graphicsScene.itemAt(0, 0);

编辑 如果我要将我的 QPixmap pixmap* 存储为成员变量,我不完全确定如何在它保留在我的插槽范围内的地方实现它。

编辑 静态成员变量?

【问题讨论】:

这应该是 QGraphicsScene* graphicsScene,而不是 QGraphicsView 你为什么不把你的QGraphicsPixmapItem*存储为一个成员变量? @thuga 我该怎么做对不起 *我知道 C 语法以及如何使用成员变量创建类。我只是不确定如何在 qt 中执行此操作,以便该类在多个插槽和函数的范围内。 这些槽和函数是包含您的场景的同一类的成员吗? 【参考方案1】:

您可以使您的QGraphicsPixmapItem 对象成为您的类的成员变量。然后你就可以从你的任何类成员函数中访问它了。

这是一个简单的例子:

class MyClass : public QWidget

    Q_OBJECT
public:
    MyClass(QWidget *parent = nullptr) : QWidget(parent)
    
        // create graphics view, scene, etc..
    

public slots:
    void openActionTriggered()
    
        ...
        myItem = scene->addPixmap(myPixmap); // you can create your item however you want.. this is just an example
    
    void mySlot()
    
        if(myItem)
        
            // do something with myItem
        
    

private:
    QGraphicsPixmapItem *myItem = nullptr; // myItem is a member variable of 
    QGraphicsScene *scene = nullptr; // I made scene a member variable so it can be accessed from any member functions

【讨论】:

这很好,我希望能够使用我的实现。但我很欣赏周围的工作。我会测试一下,希望不会遇到同样的问题。

以上是关于使用 QGraphicsView 方法 Scene() 分配 QGraphicsScene 变量的主要内容,如果未能解决你的问题,请参考以下文章

graphicsview\qgraphicsview.cpp:1723 中没有这样的信号 Scene::sceneRectChanged(QRectF) [重复]

QGraphicsView 自定义滚动条

如何从 QGraphicsScene/QGraphicsView 创建图像文件?

qt在QGraphicsView上面Scene的item里面画线段,已知两点,如何画直线,就是线段两端延伸到view的边框为止

Qt - 如何将 QGraphicsScene 缩放到 QGraphicsView

QT:QGraphicsView QGraphicsScene QGraphicsItem理解