Рабочая среда К

6.7. Подключение диалога к проекту

Когда вы создаете элемент, вы, вероятно, хотите добавить его в проект для выполнения функций, для которых он был разработан. Поскольку элемент может быть создан для выполнения нескольких функций, мы рассмотрим 2 случая - элемент унаследован от QWidget, и элемент унаследован от QDialog.

6.7.1. Наследование от QWidget

Предположим, вы создали элемент, который будет входить в состав главного окна. Если вы заполняете всю видимую область, вы должны добавить указатель на экземпляр объекта в файл заголовка с определением вашего экземпляра KTMainWindow, заменив текущий объект Просмотр. Затем измените код в методе initView для установки вашего элемента главным. Кроме того, вы можете удалить класс View из сгенерированного проекта, но помните, что экземпляр документа и экземпляр приложения (App) зависят от класса View. В этой ситуации технически гораздо более удобно создать мини-KDE приложение и создать свой экземпляр KTMainWindow.

Гораздо чаще элемент будет частью видимой области, что предполагает его объединение с другими элементами. Это может быть сделано с использованием одного из следующих классов, которые предлагают разделители для отделения двух элементов:

  1. QSplitter

  2. KPanner

  3. KNewPanner

Если видимая область будет содержать более двух элементов, вы сможете использовать второй экземпляр разделителя в качестве объекта управления в одной из первоначальных областей. Добавьте соответствующие элементы на каждую из частей видимой области и установите первый разделитель как видимую область. (см. Netscape Mail - прим. переводч.)

6.7.2. Наследование от QDialog

Если ваш элемент унаследован от QDialog, то, вероятно, он используется для изменения одного или нескольких значений; часто это необходимо для установки настроек приложения. Для вызова диалога вы должны добавить слот в класс App, вставляя объявление метода и его реализацию. Затем добавьте вызов конструктора для метода, а также вызов show() или exec() диалога. Наконец, вы должны позаботиться об обработке результатов работы диалога; это может быть сделано в диалоге изменением значений родителя, или получением значений из диалога (что сделает ваш диалог гораздо более легко переносимым в другие проекты). Имейте в виду, что вы должны вызвать delete, если вы создаете экземпляр диалога с помощью new, чтобы избежать потери памяти.

Наконец, вы должны связать вход меню (обеспечив соответствующее сообщение в строке статуса) с новым методом, вызывающим диалог; можно создать горячую клавишу и кнопку на панели инструментов. Для этого добавьте ресурсный ID в файл resource.h. Затем добавьте соответствующий вход меню в одно из выпадающих меню, уже имеющихся в панели меню, или создайте новое. Вход меню состоит из: