Руководство по программированию с wxWidgets (6. Диалоги).

Jan Bodnar, “The wxWidgets programming tutorial (6. Dialogs)”, public translation into Russian from English More about this translation.

Translate into another language.

Диалоги.

Диалоговые окна или диалоги необходимая часть большинства современных GUI приложений. Диалог определяет общение между двумя и более персонами. В приложении диалог - это окно, которое используется для "общения" с программой. Диалог используется для ввода данных, их изменения, изменения настроек приложения и т.д. Диалоги - это важное средство для коммуникации между пользователем и программой.

Существует два типа диалогов: предопределённые и пользовательские.

Предопределённые диалоги.

Предопределённые диалоги - это диалоги доступные в наборе инструментов wxWidgets (wxWidgets toolkit). Здесь есть диалоги для различных целей, например, вывод текста, получение данных, открытие и сохранение файлов и т.д. Всё это помогает программисту сэкономить время и повысить производительность труда.

Диалоги сообщений.

Диалоги сообщений используются для вывода сообщений пользователю. Они настраиваемые. Мы можем изменить иконки и кнопки, которые будут показаны в диалоге.

В нашем примере мы создали четыре кнопки и поместили их в табличный классификатор. Эти кнопки выводят четыре различных диалога. Мы создали их, указав различные флаги стиля.

wxMessageDialog *dial = new wxMessageDialog(NULL,

wxT("Error loading file"), wxT("Error"), wxOK | wxICON_ERROR);

dial->ShowModal();

Создание диалога сообщения не представляет особых сложностей. Мы сделали диалоговое окно модальным (т.е. самым верхним) указав NULL в качестве родителя. Две строки выводят текст сообщения и заголовок диалога. Указав флаги wxOK и wxICON_ERROR мы создали кнопку OK и вывели значок ошибки. Для отображения диалога на экране использовали метод ShowModal().

wxFileDialog

Это общий диалог для открытия и сохранения файлов.

В нашем примере мы создали пункт меню под названием "Open file" и простой многострочный текстовый элемент управления. При выборе этого пункта меню появится диалог wxFileDialog. Мы можем загрузить несколько простых текстовых файлов в текстовый элемент управления.

tc = new wxTextCtrl(this, -1, wxT(""), wxPoint(-1, -1),

wxSize(-1, -1), wxTE_MULTILINE);

Мы загрузили текстовые файлы в текстовый элемент управления.

wxFileDialog * openFileDialog = new wxFileDialog(this);

Здесь мы создали wxFileDialog. Мы использовали стандартные параметры (диалог файлового открытия является диалогом по умолчанию).

if (openFileDialog->ShowModal() == wxID_OK){

wxString fileName = openFileDialog->GetPath();

tc->LoadFile(fileName);

}

Здесь мы выводим диалог, получаем имена выбранных файлов и загружаем их в текстовый элемент управления.

wxFontDialog

Это общий диалог выбора шрифта.

В этом примере мы можем менять шрифт статического текста.

st = new wxStaticText(panel, wxID_ANY, wxT("The Agoge"),

wxPoint(20, 20));

Здесь мы отображаем статический текст на панели. Мы можем изменять его шрифт, используя wxFontDialog.

wxFontDialog *fontDialog = new wxFontDialog(this);

if (fontDialog->ShowModal() == wxID_OK) {

st->SetFont(fontDialog->GetFontData().GetChosenFont());

}

В этих строках описывается диалог выбора шрифта. Далее мы получаем выбранный шрифт. После этого мы изменяем статический текст, созданный ранее.

Пользовательский диалог

В следующем примере мы создали пользовательский диалог. Наш графический редактор может менять глубину цвета изображения. Чтобы обеспечить эту функциональность, мы создали диалог, подходящий для этого.

Этот пример приложения базирующегося на диалоге. Здесь проиллюстрировано, как создать пользовательский диалог.

class CustomDialog : public wxDialog

Пользовательский диалог основан на классе wxDialog.

wxStaticBox *st = new wxStaticBox(panel, -1, wxT("Colors"),

wxPoint(5, 5), wxSize(240, 150));

wxRadioButton *rb = new wxRadioButton(panel, -1,

wxT("256 Colors"), wxPoint(15, 30), wxDefaultSize, wxRB_GROUP);

Запомните, что виджет wxStaticBox должен быть создан прежде виджетов его наполняющих, и они должны быть его братьями (т.е. элементами одного с ним уровня, иметь общего с ним родителя), а не его потомками.

ShowModal();

Destroy();

Для вывода диалога на экран используем метод ShowModal(). Для удаления диалога из памяти - метод Destroy().

Original (English): The wxWidgets programming tutorial (6. Dialogs)

Translation: © ber113 .

translated.by crowd

Like this translation? Share it or bookmark!