Руководство по программированию с wxWidgets (3. Меню и панели инструментов). |
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translation complete.
Меню и панели инструментов
Строка меню
Строка меню одна из самых заметных частей интерфейса программы. Это группа команд, расположенных в различных подменю. Если в консоли Вы должны запоминать множество различных команд, здесь же большинство команд сгруппированы в логические части. Есть принятые стандарты, которые уменьшают количество времени, нужное для изучения нового приложения. Чтобы реализовать строку меню в wxWidgets, нам понадобится три вещи: wxMenuBar, wxMenu и wxMenuItem.
Строка меню
Figure: Menubar
Простой пример меню
Создать новую строку меню в wxWidgets очень просто. Всего лишь несколько строк кода.
menu.h
#include <wx/wx.h>
#include <wx/menu.h>
class SimpleMenu : public wxFrame
{
public:
SimpleMenu(const wxString& title);
void OnQuit(wxCommandEvent& event);
wxMenuBar *menubar;
wxMenu *file;
};
menu.cpp
#include "menu.h"
SimpleMenu::SimpleMenu(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(280, 180))
{
menubar = new wxMenuBar;
file = new wxMenu;
file->Append(wxID_EXIT, wxT("&Quit"));
menubar->Append(file, wxT("&File"));
SetMenuBar(menubar);
Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(SimpleMenu::OnQuit));
Centre();
}
void SimpleMenu::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(true);
}
main.h
#include <wx/wx.h>
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
main.cpp
#include "main.h"
#include "menu.h"
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
SimpleMenu *menu = new SimpleMenu(wxT("Simple Menu"));
menu->Show(true);
return true;
}
menubar = new wxMenuBar;
Сначала создаем объект строки меню.
file = new wxMenu;
Далее создаем объект меню.
file->Append(wxID_EXIT, wxT("&Quit"));
Мы добавляем элемент меню в объект меню. Первый параметр - это id элемента меню. Второй - имя элемента меню. Здесь мы не создаём wxMenuItem явно. Он создаётся методом Append() тайно. Позже мы создадим wxMenuItem вручную.
menubar->Append(file, wxT("&File"));
SetMenuBar(menubar);
После этого мы добавляем меню в строку меню. Символ & задаёт горячую клавишу. Символ, идущий за & подчёркивается. Теперь меню доступно через сочетание клавиш alt+"подчёркнутый символ" (в данном случае это сочетание alt+F). И в завершении мы вызываем метод SetMenuBar(). Это метод принадлежит виджету wxFrame. Он устанавливает строку меню.
Simle menu example
Figure: Simple menu example
Подменю.
Каждое меню может иметь подменю. Это позволяет группировать сходные команды в соответствующие группы. Например, мы можем поместить команды которые скрывают/показывают различные панели инструментов, таких как персональная панель, адресная панель, панель статуса или навигационная панель, в подменю "панели". В меню мы можем разделить команды при помощи разделителя. Разделитель является простой линией. В основном он используется для отделения таких команд как "Создать", "Открыть", "Новый" от команд типа "Печать", "Предварительный просмотр" и т. д. В нашем примере мы рассмотрим как создавать подменю и разделители.
menu.h
#include <wx/wx.h>
#include <wx/menu.h>
class SubMenu : public wxFrame
{
public:
SubMenu(const wxString& title);
void OnQuit(wxCommandEvent & event);
wxMenuBar *menubar;
wxMenu *file;
wxMenu *imp;
wxMenuItem *quit;
};
menu.cpp
#include "menu.h"
SubMenu::SubMenu(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(280, 180))
{
menubar = new wxMenuBar;
file = new wxMenu;
file->Append(wxID_ANY, wxT("&New"));
file->Append(wxID_ANY, wxT("&Open"));
file->Append(wxID_ANY, wxT("&Save"));
file->AppendSeparator();
imp = new wxMenu;
imp->Append(wxID_ANY, wxT("Import newsfeed list..."));
imp->Append(wxID_ANY, wxT("Import bookmarks..."));
imp->Append(wxID_ANY, wxT("Import mail..."));
file->AppendSubMenu(imp, wxT("I&mport"));
quit = new wxMenuItem(file, wxID_EXIT, wxT("&Quit\tCtrl+W"));
file->Append(quit);
menubar->Append(file, wxT("&File"));
SetMenuBar(menubar);
Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED,
Original (English): The wxWidgets programming tutorial (3. Menus and Toolbars).
Translation: © ber113, Косолапов Михаил .
