我正在用qt创建一个应用程序,我遇到了一个问题。
我有一个电视画面。我创建了场景,当用户单击场景项目时,我已经将一些操作付诸实施。
我可以检测到selectionChanged()信号,但是:
,但它进入了一个无限循环的item->setSelected(false)
有人知道怎么解决这个问题吗?
我想要实现的是,在取消选举时不执行任何操作,并且能够重新单击单击的项并重新执行操作。
发布于 2011-05-24 12:27:31
定义一个插槽yourSlot()并将其连接到信号selectionChanged()。在此时隙中,您将检查是否选择了负责信号发射的项。
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,我认为它应该能工作。
https://stackoverflow.com/questions/6108367
复制相似问题