Реализация слота |
Создание приложения |
Когда мы нажимаем на кнопку 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. Вы сможете найти нужный вам метод и узнать о возможностях виджета.
Рис. 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 лежат здесь.
Написание кода |
Вкратце |