私はQGraphicsItem
それにテキストがある を持っています。このテキストを編集可能にして、ユーザーがダブルクリックすると編集モードになるようにします。これを行う最も簡単な方法は、テキストを に変更しQLineEdit
、ユーザーがフォーカスを離すか、完了したら Enter キーを押すようにすることです。
QLineEdit
を に追加するにはどうすればよいQGraphicsItem
ですか? をサブクラス化したQGraphicsItem
ので、その内部にアクセスできます。
私はQGraphicsItem
それにテキストがある を持っています。このテキストを編集可能にして、ユーザーがダブルクリックすると編集モードになるようにします。これを行う最も簡単な方法は、テキストを に変更しQLineEdit
、ユーザーがフォーカスを離すか、完了したら Enter キーを押すようにすることです。
QLineEdit
を に追加するにはどうすればよいQGraphicsItem
ですか? をサブクラス化したQGraphicsItem
ので、その内部にアクセスできます。
QWidget
ベース オブジェクトを に追加するにはQGraphicsScene
、 aQGraphicsProxyWidget
が必要です。
で関数を呼び出すと、ウィジェットが に埋め込まれ、それaddWidget
が呼び出し元に返されます。QGraphicsScene
QGraphicsProxyWidget
QGraphicsProxyWidget
はQGraphicsProxyWidget
イベントをウィジェットに転送し、異なる座標系間の変換を処理します。
QLineEdit
で aを使用することを検討しているQGraphicsScene
ので、直接追加するかどうかを決定する必要があります。
QGraphicsScene* pScene = new QGraphicsScene;
QLineEdit* pLineEdit = new QLineEdit("Some Text");
// add the widget - internally, the QGraphicsProxyWidget is created and returned
QGraphicsProxyWidget* pProxyWidget = pScene->AddWidget(pLineEdit);
または、現在の に追加するだけQGraphicsItem
です。ここでは、次の子として追加できますQGraphicsItem
。
MyQGraphicsItem* pMyItem = new MyQGraphicsItem;
QGraphicsProxyWidget* pMyProxy = new QGraphicsProxyWidget(pMyItem); // the proxy's parent is pMyItem
pMyProxy->setWidget(pLineEdit); // adding the QWidget based object to the proxy
またはQGraphicsProxyWidget
、クラスのメンバーとして を追加して関連する関数を呼び出すこともできますが、子として追加する方がおそらくはるかに簡単です。
QGraphicsTextItem::setTextInteractionFlags (Qt::TextInteractionFlags flags)
API を使用できます。ただし、その中に作成する必要がありますQGraphicsTextItem
。
詳細については、次のリンクを確認してください:実装の詳細
特定の動作が必要なQGraphicsProxyWidget
場合や単にQGraphicsProxyWidget
. Qt SDK とドキュメントの「埋め込みダイアログ」の例を見てくださいQGraphicsProxyWidget
。それは長い間そこにあったので、あなたのバージョンにあるはずです. これが役立つことを願っています。