Для диалогового окна поиска мы используем два менеджера горизонтальной компоновки
Одна из особенностей классов менеджеров компоновки заключается в том, что они не являются виджетами. Взамен этого они наследуют свойства класса
При добавлении внутренних менеджеров компоновки к родительскому менеджеру компоновки (строки 25, 33 и 34) для них автоматически устанавливается родительская связь. Затем, когда главный менеджер компоновки устанавливается для диалога (строка 35), он становится дочерним элементом диалога и все виджеты в менеджерах компоновки становятся дочерними элементами диалога. Иерархия полученных родословных связей представлена на рис. 2.3.
36 setWindowTitle(tr("Find"));
37 setFixedHeight(sizeHint.height);
38 }
Наконец, мы задаем название диалогового окна и устанавливаем фиксированной его высоту, поскольку в диалоговом окне нет виджетов, которым может понадобиться дополнительное пространство по вертикали. Функция
На этом завершается рассмотрение конструктора
Теперь мы рассмотрим слоты диалогового окна:
39 void FindDialog::findClicked
40 {
41 QString text = lineEdit->text;
42 Qt::CaseSensitivity cs =
43 caseCheckBox->isChecked ? Qt::CaseSensitive
44 : Qt::CaseInsensitive;
45 if (backwardCheckBox->isChecked) {
46 emit findPrevious(text, cs);
47 } else {
48 emit findNext(text, cs);
49 }
50 }
51 void FindDialog::enableFindButton(const QString &text)
52 {
53 findButton->setEnabled(!text.isEmpty);
54 }
Слот
Слот
Эти два слота завершают написание программы диалогового окна. Теперь мы можем создать файл
01 #include
02 #include "finddialog.h"
03 int main(int argc, char *argv[])
04 {
05 QApplication app(argc, argv);
06 FindDialog *dialog = new FindDialog;
07 dialog->show;
08 return app.exec;
09 }