【发布时间】:2011-07-29 22:46:15
【问题描述】:
我有一个从 QGraphicsItem 实现的类,称为 Node。
我有一个矩形的“节点”,当用户点击它时我可以做一些事情
我使用 mousePress 和 mouseRelease 事件。
但我希望在用户单击“超出”矩形形状时收到通知。
我尝试实现这些功能:
Qt 代码:
void Node::focusInEvent ( QFocusEvent * event){
cout<<"in"<<endl;
update();
QGraphicsItem::focusInEvent(event);
}
void Node::focusOutEvent ( QFocusEvent * event ){
cout<<"out"<<endl;
update();
QGraphicsItem::focusOutEvent(event);
}
void Node::hoverEnterEvent(QGraphicsSceneHoverEvent *event){
cout<<"out"<<endl;
}
如果我点击进入或离开矩形,这些不会做出反应。 我应该自己设置一个逻辑,例如获取鼠标位置并控制它是否超出矩形? 还是有内置方法?
或者“Node”对象如何知道是否点击了其他 Node 对象?
我也想知道,谷歌搜索但找不到焦点事件和焦点事件何时触发?我想当我点击项目时,focusOutEvent 必须工作,然后退出项目,我错了吗?
谢谢你的想法。
【问题讨论】:
标签: qt focus qgraphicsitem