使用 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) [重复]
如何从 QGraphicsScene/QGraphicsView 创建图像文件?
qt在QGraphicsView上面Scene的item里面画线段,已知两点,如何画直线,就是线段两端延伸到view的边框为止