首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt QGraphicsScene如何分离选择和unSelect信号?

Qt QGraphicsScene如何分离选择和unSelect信号?
EN

Stack Overflow用户
提问于 2011-05-24 09:29:32
回答 1查看 2.9K关注 0票数 2

我正在用qt创建一个应用程序,我遇到了一个问题。

我有一个电视画面。我创建了场景,当用户单击场景项目时,我已经将一些操作付诸实施。

我可以检测到selectionChanged()信号,但是:

  1. 信号发出两次(一次针对单击的项,一次针对先前选择的项(取消选择),因此所需的操作对两个项执行两次)。(我试着设置selection/deselection...).

,但它进入了一个无限循环的item->setSelected(false)

有人知道怎么解决这个问题吗?

我想要实现的是,在取消选举时不执行任何操作,并且能够重新单击单击的项并重新执行操作。

EN

回答 1

Stack Overflow用户

发布于 2011-05-24 12:27:31

定义一个插槽yourSlot()并将其连接到信号selectionChanged()。在此时隙中,您将检查是否选择了负责信号发射的项。

代码语言:javascript
复制
void yourSlot() {
   QGraphicsItem  *item = qobject_cast<QGraphicsItem  *>(sender());

   if (item) {
      if ( item->isSelected() ) { //this item is selected
         doSomethin();

         //*deselect* the item so that it can be selected again
         item->setSelected(false);
      } 
      else { //the signal was fired because the item was deselected
        //ignore()
      }
   }
}

我现在不能尝试它,因为我没有在这台计算机上安装Qt,我认为它应该能工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6108367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档