标题:QGraphicsScene中QGraphicsItem单选的问题
作者:liuweilhy
日期:2016-05-07 20:22
内容:
QGraphicsScene内QGraphicsItem选中状态的默认设置为:
1、左键单击选中,单击场景区域别处(包括场景内外)取消选中 ;
2、如果单击时按住Ctrl键,则不取消前面已有的选择,执行多选。
请问如何修改使之仅保持一个选中项,类似于QRadioButton的效果?
恳请高手给个思路,多谢!
#1 [XChinux 05-07 20:28]
只能自己程序判断了,谁当前被选中了,就将其它元素的选中状态都取消掉。
#2 回 XChinux 的帖子 [liuweilhy 05-07 21:09]
XChinux:
只能自己程序判断了,谁当前被选中了,就将其它元素的选中状态都取消掉。
谢谢版主回复!
我重载QGraphicsScene的eventFilter函数, 监视QEvent::GraphicsSceneMousePress鼠标按下事件,如下:
if (event->type() == QEvent::GraphicsSceneMousePress)
{
QGraphicsSceneMouseEvent *mouseEvent = static_cast (event);
// 得到当前点最高层的Item
QGraphicsItem * item = scene.itemAt(mouseEvent->scenePos(), QTransform());
// 空对象指针也能用data()方法
// 如果有别的棋子,就选中它,并消除其它棋子的选中状态
if (qgraphicsitem_cast (item))
{
scene.clearSelection();
item->setSelected(true);
piece = (PieceItem *) item;
playSound(soundChoose);
//qDebug() isSelected();
& ..
#3 [never_forget 05-08 16:01]
这个是不是要重载 项 的函数,毕竟被选中的的这个动作发生在项的身上,还是有这个可能的吧。就是这么一说!