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