外部 XRC 方法論を使用して、wxFormBuilder でユーザー インターフェイスを実装しています。
この方法で wxStaticBoxSizer からぶら下がっているパネルの配列を実装しようとしています:
MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size) {
wxXmlResource::Get()->LoadFrame((wxFrame*)this, (wxWindow*)NULL , wxT("MyFrame1"));
wxStaticBoxSizer* almacenador = (wxStaticBoxSizer*)FindItem(XRCID("Contenedor"));
if (!almacenador){
cout << "Error cargando sizer!" << endl << flush;
}
wxXmlResource::Get()->LoadPanel( (wxWindow*)almacenador , wxT("MyPanel6"));
wxXmlResource::Get()->LoadPanel( (wxWindow*)almacenador , wxT("MyPanel6"));
wxXmlResource::Get()->LoadPanel( (wxWindow*)almacenador , wxT("MyPanel6"));
SetTitle(title);
SetIcon(wxICON(appicon));
SetSize(size);
SetPosition(pos);
Show(true);
}
「メイン」関数からリソースがロードされた場所
wxXmlResource::Get()->Load("rc/resource2.xrc");
行。プログラムを起動すると、3 つのパネルがどこにも表示されないため、機能します。
これは私の XRC のファイルです:
メインフレーム:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">
<object class="wxFrame" name="MyFrame1">
<style>wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL</style>
<size>283,401</size>
<title></title>
<centered>1</centered>
<aui_managed>0</aui_managed>
<object class="wxPanel" name="m_panel1">
<style>wxTAB_TRAVERSAL</style>
<object class="wxBoxSizer">
<orient>wxVERTICAL</orient>
<object class="sizeritem">
<option>0</option>
<flag>wxEXPAND</flag>
<border>5</border>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<option>0</option>
<flag>wxALL|wxALIGN_BOTTOM</flag>
<border>5</border>
<object class="wxStaticText" name="m_label_Nombre1">
<label>Nombre</label>
<wrap>-1</wrap>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<flag>wxEXPAND|wxTOP|wxRIGHT|wxLEFT</flag>
<border>5</border>
<object class="wxTextCtrl" name="m_text_Nombre">
<value></value>
</object>
</object>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALIGN_TOP|wxEXPAND</flag>
<border>5</border>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<option>0</option>
<flag>wxALL|wxALIGN_BOTTOM</flag>
<border>5</border>
<object class="wxStaticText" name="m_label_Apellidos">
<label>Apellidos</label>
<wrap>-1</wrap>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<flag>wxTOP|wxRIGHT|wxLEFT</flag>
<border>5</border>
<object class="wxTextCtrl" name="m_text_Apellidos">
<value></value>
</object>
</object>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxEXPAND</flag>
<border>5</border>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<option>0</option>
<flag>wxALL|wxALIGN_BOTTOM</flag>
<border>5</border>
<object class="wxStaticText" name="m_label_Edad">
<label>Edad</label>
<wrap>-1</wrap>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALIGN_BOTTOM|wxALIGN_RIGHT|wxTOP|wxRIGHT|wxLEFT</flag>
<border>5</border>
<object class="wxSpinCtrl" name="m_spin_Edad">
<style>wxSP_ARROW_KEYS</style>
<value>0</value>
<min>0</min>
<max>10</max>
</object>
</object>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxEXPAND | wxALL</flag>
<border>5</border>
<object class="wxStaticLine" name="m_staticline1">
<style>wxLI_HORIZONTAL</style>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<flag>wxEXPAND</flag>
<border>5</border>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<option>1</option>
<flag>wxALL|wxEXPAND</flag>
<border>5</border>
<object class="wxRadioBox" name="m_radioBox_Sexo">
<label>Sexo</label>
<selection>0</selection>
<content>
<item>Hombre</item>
<item>Mujer</item>
</content>
<dimension>1</dimension>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<flag>wxEXPAND|wxALL</flag>
<border>5</border>
<object class="wxStaticBoxSizer">
<orient>wxVERTICAL</orient>
<label>Preferencias</label>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxCheckBox" name="m_checkBox_Cocacola">
<label>Cocacola</label>
<checked>0</checked>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxCheckBox" name="m_checkBox_FantaNaranja">
<label>Fanta naranja</label>
<checked>0</checked>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxCheckBox" name="m_checkBox_FantaLimon">
<label>Fanta Limon</label>
<checked>0</checked>
</object>
</object>
</object>
</object>
</object>
</object>
<object class="sizeritem">
<option>1</option>
<flag>wxEXPAND</flag>
<border>5</border>
<object class="wxStaticBoxSizer" name="Contenedor">
<orient>wxVERTICAL</orient>
<label>Contenedor</label>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxButton" name="m_button4">
<label>MyButton</label>
<default>0</default>
</object>
</object>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALIGN_BOTTOM</flag>
<border>5</border>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxButton" name="m_button_Guardar">
<label>Guardar</label>
<default>0</default>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxButton" name="m_button_Limpiar">
<label>Limpiar</label>
<default>0</default>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxButton" name="m_button_Salir">
<label>Salir</label>
<default>0</default>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</resource>
そして2番目のもの(配列として繰り返されるオブジェクト):
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">
<object class="wxPanel" name="MyPanel6">
<style>wxTAB_TRAVERSAL</style>
<size>500,300</size>
<object class="wxBoxSizer">
<orient>wxVERTICAL</orient>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxButton" name="m_button5">
<label>FRAME2</label>
<default>0</default>
</object>
</object>
</object>
</object>
</resource>
メイン XRC 内に XRC パネルの配列を作成する方法は? ありがとう