0

我面临着某种谜团:

if( itemSelectionne->parentItem()->type() == NodeType) {

    ((GraphicsScene*) this->scene())->unselectAll();

    itemSelectionne->parentItem()->setSelected(true);

    //Coordinate of my toolbar, works fine 
    int centreX = itemSelectionne->pos().x() + 
            itemSelectionne->boundingRect().center().x();
    int centreY = itemSelectionne->pos().y() + 
            itemSelectionne->boundingRect().center().y();

    QPointF point = this->mapFromScene(
        itemSelectionne->mapToScene(QPoint(centreX, centreY))
    );

    _nm.move(point.x(), point.y());
    _nm.show((GraphicsNodeItem*) itemSelectionne->parentItem());
}

鼠标单击 QGraphicsView 后,我输入这段代码以显示我的 QToolbar(_nm 是一个自定义对象,包含 2 个 QToolbar。Show(...) 调用 QToolbar 上的 show() )我第一次进入如果并调用 show() QToolbar 不会出现。但它会在第二次点击和之后的每一次点击时出现。

知道它可能来自哪里吗?

谢谢

编辑:这是我在自定义类中调用的函数。_currentNode 是一个指向自定义 QGraphicsItemGroup 子类的指针。

void NodeMenu::show(GraphicsNodeItem * node) {
_currentNode = node;

_menuTop.show();
_menuBottom.show();
}
4

1 回答 1

0

找到了解决方案:

我在自定义对象的构造函数中添加了以下内容:

_menuTop.show();
_menuBottom.show();

我不知道这是否是一个好的解决方案,但它对我有用。

于 2012-04-21T17:48:39.943 回答