问题标签 [qgraphicsscene]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2312 浏览

qt - 如何在没有水平滚动条的情况下获得准确的宽度?

在 Qt 中,我创建了一个 QGraphicsScene,如下所示。

现在创建的窗口带有水平和垂直滚动条。由于我不想使用水平滚动条,所以它使用了代码

m_view->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff);

但是此时,没有水平滚动条,宽度也不是150,是140左右。如何在没有水平滚动条的情况下获得准确的宽度?

0 投票
1 回答
3386 浏览

c++ - QGraphicsScene 在 QGraphicsView 中奇怪地缩放

我正在搞乱QGraphicsViewQGraphicsScene创建一个井字游戏克隆。我在我的场景中添加了一些QGraphicsLineItems 并覆盖了resizeEvent包含视图的 Widget 的方法,这样当窗口调整大小时,视图及其内容都会适当地缩放。这工作正常,除了我第一次运行程序:

不正确的缩放比例

一旦我按任意数量调整窗口大小,场景就会正确缩放:

正确缩放

这是代码:

主.cpp:

测试应用程序.h:

测试应用程序.cpp:

我尝试在 's 构造函数fitInView的末尾添加一个调用TestApp,但它似乎没有做任何事情 -resizeEvent无论如何似乎在程序执行开始时被调用一次。

干杯。

0 投票
1 回答
1310 浏览

qt - 我想知道如何在两个节点之间画一条线。.

我简单解释一下:首先要在图形场景中按下鼠标并释放鼠标。该点应该是起点。然后另一个我应该按下鼠标并释放这将是终点然后应该画线。我可以在鼠标按下和移动时画一条线。但我想知道 abpve 提到的方式。请有人帮助我。我被困在这了。

0 投票
1 回答
3270 浏览

c++ - 查看整个 QGraphicsScene

我正在尝试在 Qt 中编写地图编辑器,将 QGraphicsView 和 QGraphicsScene 用于地图和瓦片表。

我现在遇到的问题是制作一个用于导入瓷砖的好小部件。为此,我使用 QTabWidget(用于不同的 tile sheet),并使用 TileWidget 作为每个选项卡的小部件,其中包含 QGraphicsScene 和 QGraphicsView。

它在一定程度上工作,但并非所有图块(或 TileObjects,它们是 QGraphicsItem 的实现)都是可见的。我什至打电话view->ensureVisible(scene->sceneRect()),但仍然不是所有的 QGraphicsScene 都是不可见的,即使有滚动条也是如此。

我知道这是由于限制了我的 QTabWidget 的最大大小,但这是必要的。

这主要发生在我导入更大的瓷砖表时。

我有一个TileWidget作为 的QWidgetQTabWidget它同时具有QGraphicsSceneQGraphicsView

TileView只是一个简单的QGraphicsView重新实现来处理鼠标释放事件。

要添加瓷砖,我只需调用scene->addItem().

我没有其他代码TileView。当我使用

我得到这样的东西。

在此处输入图像描述

较小的瓷砖可以使用,但较大的瓷砖则不行。我应该添加什么来保持瓷砖的正常大小,并使用滚动条导航 TileView?

没关系,想通了。只是我笨。

0 投票
2 回答
1285 浏览

qt - QGraphicsView 上的分离层之类的功能

在我的QGraphicsView中,我显示了一张地图。我需要在上边缘和左边缘分别显示水平标尺和垂直标尺。

地图需要滚动,但上述标尺应显示在其固定位置,但更改其比例值。

我试图实现这个使用drawForeground方法。由于地图尺寸较大,我只绘制可见区域。所以我需要update()每次滚动完成。但这个结果有时会闪烁。

我觉得最好有类似的方法。

解决问题的最佳方法是什么?

0 投票
2 回答
463 浏览

c++ - Qt 对象信号未连接到方法(处理程序)

我在处理 Qt 中的点击时遇到了问题。我有以下课程:

现在我想将一个插槽连接到信号,我执行以下操作:

当我运行它时,会显示圆圈,canvas但是当我单击圆圈时没有任何反应,控制台显示以下内容:

有什么建议么?

0 投票
2 回答
3353 浏览

qt - QGraphicsScene::itemAt() - 如何识别自定义类

我有一个小问题

我正在编写 Petri Net 模拟器...

我有两个不同的课程

当我打电话...

,是否有可能以某种方式了解我点击了什么项目?分别 ItemAt 给了什么项目?

0 投票
1 回答
1649 浏览

qt - 如何正确使用 QGraphicsLinearLayout 和 QGraphicsScene 来定位 QGraphicsItems?

我正在努力与一组sQGraphicsLinearLayout一起工作,以便在场景中以线性方式定位。我尝试使用以下方法:QGraphicsSceneQGraphicsItem

这不起作用,因为所有项目仍然彼此叠放,而不是彼此相邻(根据线性布局规定的布局)。我究竟做错了什么?

0 投票
1 回答
811 浏览

qt - QGraphicsScene : 获取光标下的 QGraphicsItemGroup

我无法在光标下方获取 QGraphicsItemGroup 的指针。QGraphicsScene::ItemAt返回组的对象之一,但不是 ItemGroup 它自己。

任何线索如何做到这一点?

谢谢

0 投票
1 回答
3402 浏览

qt - Why is it more efficient to remove a QGraphicsItem from its scene before destroying it?

According to the QGraphicsItem destructor documentation, "It is more efficient to remove the item from the QGraphicsScene before destroying the item."

Why is that? I can't think of how it could make a difference. And if it did make a difference, shouldn't the QGraphicsItem destructor just call:

I checked the source, and this does not seem to be the case, although sometimes I have a tough time understanding Qt source. EDIT: See comments in jdi's answer.