私はQGraphicsItemそれにテキストがある を持っています。このテキストを編集可能にして、ユーザーがダブルクリックすると編集モードになるようにします。これを行う最も簡単な方法は、テキストを に変更しQLineEdit、ユーザーがフォーカスを離すか、完了したら Enter キーを押すようにすることです。
QLineEditを に追加するにはどうすればよいQGraphicsItemですか? をサブクラス化したQGraphicsItemので、その内部にアクセスできます。
私はQGraphicsItemそれにテキストがある を持っています。このテキストを編集可能にして、ユーザーがダブルクリックすると編集モードになるようにします。これを行う最も簡単な方法は、テキストを に変更しQLineEdit、ユーザーがフォーカスを離すか、完了したら Enter キーを押すようにすることです。
QLineEditを に追加するにはどうすればよいQGraphicsItemですか? をサブクラス化したQGraphicsItemので、その内部にアクセスできます。
QWidgetベース オブジェクトを に追加するにはQGraphicsScene、 aQGraphicsProxyWidgetが必要です。
で関数を呼び出すと、ウィジェットが に埋め込まれ、それaddWidgetが呼び出し元に返されます。QGraphicsSceneQGraphicsProxyWidgetQGraphicsProxyWidget
は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。それは長い間そこにあったので、あなたのバージョンにあるはずです. これが役立つことを願っています。