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> содержит определение всех классов, входящих в модули QtCore и QtGui. Включив этот заголовочный файл, мы можем не беспокоиться о включении каждого отдельного класса.
<< назад вперед >>