【问题标题】:Using the QGraphicsView Method Scene() to Assign a QGraphicsScene Variable使用 QGraphicsView 方法 Scene() 分配 QGraphicsScene 变量
【发布时间】: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 中执行此操作,以便该类在多个插槽和函数的范围内。
  • 这些槽和函数是包含您的场景的同一类的成员吗?

标签: c++ qt qgraphicsview qgraphicsscene


【解决方案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
}

【讨论】:

  • 这很好,我希望能够使用我的实现。但我很欣赏周围的工作。我会测试一下,希望不会遇到同样的问题。
猜你喜欢
  • 2013-10-26
  • 2017-02-16
  • 2011-08-21
  • 2011-06-26
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 2013-11-19
相关资源
最近更新 更多