Qt等待用户在QGraphicsScene中选择项目

Posted

技术标签:

【中文标题】Qt等待用户在QGraphicsScene中选择项目【英文标题】:Qt wait for user to select items in QGraphicsScene 【发布时间】:2013-06-10 15:17:27 【问题描述】:

所以我的 ui 中有 2 个 QGraphicsScenes 和 QGraphicsViews。在那些QGraphicScenes 和QGraphicsItems 中,现在我想让我的程序等待让用户在每个场景中选择一个QGraphicsItem om,但是我该怎么做呢?

我尝试过类似的方法:

while(scene->selectedItems().length()<1 || bordScene->selectedItems().length()<1)
    ;

但这只会导致程序进入无限循环,用户仍然无法选择项目。

这可能是一个非常简单的问题,但我似乎找不到简单的解决方案

【问题讨论】:

【参考方案1】:

您可以创建一个插槽并将两个 GraphicsScene 的 selectionChanged 信号连接到它。在插槽中,您可以检查所选项目。 由于插槽仅在连接的 GraphicsScene 之一的选择发生变化时才会触发,因此您没有无限循环,您的程序也不会被阻塞。

【讨论】:

但是我仍然不能强迫用户做出选择:S 我只想在用户做出选择之前什么都不发生:S 只有当他选择某些东西时才会触发插槽:S跨度> 我不知道你的程序,所以我不知道还会发生什么。但是有一些方法可以“强迫”用户。例如,您可以在模式对话框中显示选择视图。 @Cédric Vandelaer 定义“什么都没有发生”。如果您让主循环忙于while,则不会真正发生任何事情,并且用户无法选择元素。这显然不是你想要的。这是您的程序,您应该决定何时启用/禁用、显示/隐藏特定的 GUI 元素等。 ehm 我想暂停程序的主循环,让用户仍然能够从视图中选择一个 qgraphicsitem。所以主循环应该暂停,直到选择了一些东西 这是可能的。使用自己的 QEventLoop 中的图形视图启动您的小部件,并从主循环调用 exec。新循环一直运行,直到您从小部件中调用 exit。主循环保持在 exec 调用直到它返回。

以上是关于Qt等待用户在QGraphicsScene中选择项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QGraphicsScene 中缩放图像? (Qt 5.11)

Qt炫酷动画demo04-仿Android旋转图标的等待对话框动画

Qt炫酷动画demo04-仿Android旋转图标的等待对话框动画

Qt炫酷动画demo04-仿Android旋转图标的等待对话框动画

Qt炫酷动画demo04-仿Android旋转图标的等待对话框动画

如何在 QGraphicsScene 上进行选择?