015 void findPrev(const QString &str, Qt::CaseSensitivity cs);

В секции signals объявляется два сигнала, которые генерируются диалоговым окном при нажатии пользователем кнопки Find (найти). Если установлен флажок поиска в обратном направлении (Search backward), генерируется сигнал f indPrevi-ous(); в противном случае генерируется сигнал findNext().

Ключевое слово signals на самом деле является макросом. Препроцессор С++ преобразует его в стандартные инструкции языка С++ и затем передает их компиля­тору. Qt: .CaseSensitivity является перечислением и может принимать значение Qt: :CaseSensitive или Qt: :CaseInsensitive.

016 private slots:

017 void findClickedO;

018 void enableFindButton(const QString &text);

019 private:

020 QLabel *label;

021 QLineEdit *lineEdit;

022 QCheckBox *caseCheckBox;

023 QCheckBox *backwardCheckBox;

024 QPushButton *findButton;

025 QPushButton *closeButton;

026 };

027 #endif

В закрытой (private) секции класса мы объявляем два слота. Для реализации слотов нам потребуется большинство дочерних виджетов диалогового окна, поэтому мы резервируем для них соответствующие переменные-указатели. Ключевое слово slots, так же как и signals, является макросом, который преобразуется в последова­тельность инструкций, понятных компилятору С++.

Для закрытых переменных мы использовали предварительные объявления их классов. Это допустимо, потому что все они являются указателями, и мы не исполь­зуем их в заголовочном файле - поэтому компилятору не требуется иметь полные определения классов. Мы могли бы воспользоваться соответствующими заголовоч­ными файлами (<QCheckbox>, <QLabel> и так далее), но при использовании предвари­тельных объявлений компилятор работает немного быстрее.

Теперь рассмотрим файл f inddialog. срр, в котором находится реализация класса FindDialog.

001 #include <QtGui >

002 #include "finddialog.h"

Во-первых, мы включаем <QtGui> - заголовочный файл, который содержит оп­ределения классов графического интерфейса Qt. Qt состоит из нескольких модулей, каждый из которых находится в своей собственной библиотеке. Наиболее важными модулями являются QtCore, QtGui, QtNetwork, QtOpenGL, QtSql, QtSvgH QtXml. Заго­ловочный файл <QtGui> содержит определение всех классов, входящих в модули Qt­Core и QtGui. Включив этот заголовочный файл, мы можем не беспокоиться о вклю­чении каждого отдельного класса.


<< назад вперед >>