• 10145阅读
  • 6回复

[提问]QGraphicsTextItem的可编辑状态 [复制链接]

上一主题 下一主题
离线friendbaby
 

只看楼主 倒序阅读 楼主  发表于: 2011-11-03
demo里 diagramscene这个例子,选中TEXT按钮后,单击graphicsview就可以输入文字,当单击的时候进入可编辑状态。
代码如下:

void Scene::mouseDoubleClickEvent( QGraphicsSceneMouseEvent *event )
{
  textItem = new DiagramTextItem;
  textItem->setTextInteractionFlags(Qt::TextEditorInteraction);
  textItem->setZValue(1000.0);
  addItem(textItem);
  textItem->setPos(event->scenePos());
QGraphicsScene::mouseDoubleClickEvent(event);
}
如果注释掉 QGraphicsScene::mouseDoubleClickEvent(event); 点击view就不能进入可编辑状态。

我想实现的功能是 在一个QGraphicsItem内双击 就会产生一个TextItem 并且进入可编辑状态,但TextItem无法进入可编辑状态
代码如下:

void Node::mouseDoubleClickEvent( QGraphicsSceneMouseEvent *event )
{  textItem = new DiagramTextItem;
  textItem->setPlainText("drgddf");
  textItem->setTextInteractionFlags(Qt::TextEditorInteraction);
  textItem->setZValue(1000.0);
  scene()->addItem(textItem);
  textItem->setPos(event->scenePos());
  textItem->textInteractionFlags();
QGraphicsItem::mouseDoubleClickEvent(event);
}如果让QGraphicsScene相应doubleclick事件,QGraphiceTextItem就可以进入可编辑状态,如果QGraphicsItem相应,就无法进入。
但是TextInteractionFlags却一直是Qt::TextEditorInteraction。
我所指的可编辑状态是指第一次产生textitem时候就进入可编辑状态。
测试了半天也找不到问题所在,哪位同学知道其中的原有呢。
Smiling is best language , can express everything , also can conceal everything.
离线wxj120bw

只看该作者 1楼 发表于: 2011-11-03
回 楼主(friendbaby) 的帖子
Node::mouseDoubleClickEvent这个函数是QGraphicsItem响应吧 这个函数双击时执行了吗?
离线friendbaby

只看该作者 2楼 发表于: 2011-11-03
双击肯定执行了
textItem->setPlainText("drgddf");
这里不是有这句吗,双击能输出这句,但不能进入编辑状态。



PS:又看到你了,上次你就帮我很大忙。
Smiling is best language , can express everything , also can conceal everything.
离线friendbaby

只看该作者 3楼 发表于: 2011-11-04
回 1楼(wxj120bw) 的帖子
突发灵感,这个问题解决了
是因为textItem没有焦点,所以即使设置为可编辑状态他也无法显示为可编辑状态。
Smiling is best language , can express everything , also can conceal everything.
离线friendbaby

只看该作者 4楼 发表于: 2011-11-04
textItem->setFocus();
Smiling is best language , can express everything , also can conceal everything.
离线wxj120bw

只看该作者 5楼 发表于: 2011-11-04
回 3楼(friendbaby) 的帖子
这个灵感是有点突呀   QGraphicsItem为什么默认不把焦点传过去呢 还需要去获取焦点

离线5373119

只看该作者 6楼 发表于: 2012-02-15
非常非常感谢你的灵感   我也遇到同样的问题不知道如何解决  谢谢你
快速回复
限100 字节
 
上一个 下一个