wxWidgets Глава 2. Базовый GUI. Часть 4. Взаимодействие виджетов

В этом уроке мы рассмотрим как виджеты могут взаимодействовать между собой в приложении.

Для начала мы создадим 2 класса LeftPanel и RightPanel - Левая и правая панель

LeftPanel.h
LeftPanel.cpp

LeftPanel

Теперь рассмотрим подробнее класс LeftPanel. Сначало мы наследуем класс от wxPanel и передаем родителя панель в класс. Далее создаем 2 кнопки класса wxButton - btnPlus, btnMinus которые при нажатии должны увеличивать счетчик или уменьшать. Соотвественно создем 2 event функции которые будут выполнять данное действие.

Также мы получаем объект родительского класса - MainWin *mainWin = (MainWin *) parentPanel->GetParent();

RightPanel.h
RightPanel.cpp

RightPanel

В правой панели мы помещает текстовое поле класса wxStaticText. И по умалчанию ставим значение ноль.

 

Далее в основном классе должны разместить эти панели. Соответственно инициализируем панели 

Как в прошлом уроке сначала размещаем базовую панель - wxPanel *panel = new wxPanel(this, wxID_ANY);

 

Затем нам нужно сделать разделение панелей с помощью класса wxBoxSizer вот весь код MainWin.cpp

Передаём данные с левой панели на правую

Как показано выше в левой панели мы создали объект ссылающую на родителя. Также мы увеличиваем или уменьшаем счетчик соотвественно кнопке. Далее мы через родительский объект (mainWin) передаем в текстовое поле(textLabel) правой панели (rightPanel) значение счетчика(count) - mainWin->rightPanel->textLabel->SetLabel(wxString::Format(wxT("%d"), count));

И теперь при нажатии кнопки в правой панели значение уменьшается или увеличивается в зависимости от того какая кнопка была нажата