Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum


Lines Club

Ищем достойных соперников.




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

Библиотека сайта или "Мой Linux Documentation Project"

 

Рабочая среда 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 лежат здесь.

Назад

Содержание

Далее

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

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

 Вкратце




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

Комментарии отсутствуют