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() を呼び出します)。 if と call show() QToolbar が表示されません。ただし、2回目のクリックとその後のすべてのクリックで表示されます。

それがどこから来たのか、何か考えはありますか?

どうも

編集:これは、カスタムクラスで呼び出す関数です。_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 に答える