В filedialog.h вместо включения <QDialog> и использования предварительных объявлений для классов QCheckBox, QLabel, QLineEdit и QPushButton мы могли бы прос­то включить <QtGui>. Однако включение такого большого заголовочного файла, взя­того из другого заголовочного файла, обычно свидетельствует о плохом стиле коди­рования, особенно при разработке больших приложений.

3 FindDialog::FindDialog(QWidget *parent)

4 : QDialog(parent)

5 {

6 label = new QLabel(tr("Find &what:"));

7 lineEdit = new QLineEdit;

8 label->setBuddy(lineEdit);

9 caseCheckBox = new QCheckBox(tr("Match &case"));

10 backwardCheckBox = new QCheckBox(tr("Search backward"));

11 findButton = new QPushButton(tr("&Find"));

12 findButton->setDefault(true);

13 findButton->setEnabled(false);

14 closeButton = new QPushButton(tr("Close"));

В строке 4 конструктору базового класса передается указатель на родительский виджет (параметр parent). Затем мы создаем дочерние виджеты. Функция tr() пере­водит строковые литералы на другие языки. Она объявляется в классе Q0b j ect и в каждом подклассе, содержащем макрос Q_0BJECT. Любое строковое значение, которое пользователь будет видеть на экране, полезно преобразовывать функцией tr(), даже если вы не планируете в настоящий момент переводить ваше приложение на ка­кой-нибудь другой язык. Перевод приложений Qt на другие языки рассматривается в главе 17.

Мы используем знак амперсанда ('&') для задания клавиш быстрого доступа. Например, в строке 11 создается кнопка Find, которая может быть активирована на­жатием пользователем сочетания клавиш Alt+F на платформах, поддерживающих клавиши быстрого доступа. Амперсанды могут также применяться для управления фокусом: в строке 6 мы создаем текстовую метку с клавишей быстрого доступа (Alt+W), а в строке 8 мы устанавливаем строку редактирования в качестве «партне­ра» этой текстовой метки. Партнером (buddy) называется виджет, на который пере­дается фокус при нажатии клавиши быстрого доступа текстовой метки. Поэтому при нажатии пользователем сочетания клавиш Alt+W (клавиша быстрого доступа текс­товой метки) фокус переходит на строку редактирования (которая является партне­ром текстовой метки).


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