6

これを検索して見つけるのは非常に難しいと思いましたが、非常に簡単に言えば、パネルからコントロールを削除するにはどうすればよいですか? wxStaticText と wxTextCtrl があり、既存のアイテムを削除して新しいアイテムに置き換えたいですか? 呼び出すことができるある種のコマンドはありますか、それとも自分で何かを作成する必要がありますか? 乾杯

4

2 に答える 2

6

編集:ravenspointが指摘したように、コントロールを削除するだけでは十分ではありません。一部のコントロールは、で追加のクリーンアップを実行しDestroy()ます。

あなたは単にDestroy()コントロールすることができます。wxWidgetsはそれを親ウィンドウから自動的に削除し、そのメモリを解放します。

wxWindow* ctrl = new wxStaticText(this);
ctrl->Destroy();
ctrl = new wxTextCtrl(this);

コントロールへのポインタがない場合はFindWindowByIdFindWindowByLabelまたはFindWindowByNameを使用して取得できます。

if(wxWindow* ctrl = wxWindow::FindWindowById(ID_MYCTRL,this))
    ctrl->Destroy();

コントロールがサイザーに追加された場合は、有効な間に交換する必要があります。

newCtrl = new wxWindow(...);
sizer->Replace(oldCtrl,newCtrl); // both oldCtrl and newCtrl must be valid
oldCtrl->Destroy();
Layout(); // update sizer

または、最初からwxTextCtrlを作成して、読み取り専用にすることもできます。ただし、wxStaticTextのように表示するには、追加のスタイル変更が必要になります(たとえば、背景色、境界線など)。

于 2013-01-01T17:31:25.260 に答える
1

最も簡単な方法は、ウィジェットを非表示にすることです。 http://docs.wxwidgets.org/trunk/classwx_window.html#a7ed103df04014cb3c59c6a3fb4d95328

ただし、ウィジェットを完全に削除する場合は、Destroy http://docs.wxwidgets.org/trunk/classwx_window.html#a6bf0c5be864544d9ce0560087667b7fcを呼び出します。

于 2013-01-01T17:15:42.203 に答える