Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

 

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

Реализация слота

Назад

Создание приложения

  Далее

Реализация слота

Когда мы нажимаем на кнопку Create!, наша программа должна отображать подпись в поле ввода (виджет TextEdit). Вам стоит прочитать документацию к Qt, чтобы узнать, какие сигналы и слоты уже доступны для определенного виджета. Например, взгляните на описание класса QPushButton (или откройте файл /usr/lib/qt/doc/html/qpushbutton.html - прим. пер.). Он наследуется из класса QButton, и поэтому в документации к QButton вы найдете список доступных сигналов.

Сигналы

void pressed ()
void released ()
void clicked ()
void toggled ( bool on )
void stateChanged ( int state )

Нам понадобится сигнал clicked() кнопки Create!.

Так как класс SigCreate является производным от класса SigCreateDlg, мы реализуем слот в классе SigCreate. Это будет публичный метод. Добавьте в файл sigcreate.cpp следующие строки:

 void SigCreate::slotCreateSig()
 {
 sigBox->append("\n--");
 sigBox->append(nameBox->text());
 sigBox->append(mailBox->text());
 sigBox->append(commBox->currentText());
 }

и, разумеется, этот метод нужно объявить в файле sigcreate.h:

 public slots:
     virtual void slotCreateSig();

Из приведенного выше кода видно, что в sigBox (виджет TextEdit) сначала будет добавлена строка "--", затем текст из nameBox (ваше имя), затем e-mail и комментарий. append() — это метод класса QTextEdit, подробнее обо всех методах можно прочитать в документации к классу QTextEdit. Вы сможете найти нужный вам метод и узнать о возможностях виджета.

Заново скомпилируйте проект (Build (Сборка) =>Build Project, затем Build =>Install). И вот что у вас должно получиться:
Работает!

Рис. 20: Работает!

Еще пара слов о сигналах и слотах. Этот механизм безопасен: сигнатура сигнала должна совпадать с сигнатурой слота-приемника (например, valueChanged(int) может быть соединен только со слотом, тип аргумента которого — int). Также не забудьте, что все классы, унаследованные из QObject или одного из его подклассов (например, QWidget), могут содержать сигналы и слоты.

Все строки, использованные в программе для KDE, должны быть заключены в функцию i18n() (не забудьте добавить заголовочный файл klocale.h: #include klocale.h), т.к. все проекты KDE переводятся на разные языки. Об интернационализации подробно рассказывается в документе KDE Translation HowTo. В Главе 5 этого руководства также рассказано, как сделать перевод вашего приложения.

Если вам нужна помощь, вы можете послать мне письмо или поговорить со мной по IRC: сервер irc.openprojects.net, канал #kde-women или #kde-devel, мой ник — annma. (пишите автору по-английски - прим. пер.)

Исходники проекта SigCreate лежат здесь.

Назад

Содержание

Далее

Написание кода 

На уровень вверх

 Вкратце