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

时间:2017-08-08 03:37:58

标签: c++ qt qgraphicsview qgraphicsscene

如果我想在第一时间使用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 *存储为成员变量,我不完全确定如何实现它仍然在我的插槽的范围内。

编辑 静态成员变量?

1 个答案:

答案 0 :(得分: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
}