Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Qt.doc
Скачиваний:
12
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

2.2. Создание динамически изменяемых окон

Создадим заготовку для следующей лабораторной работы, сделав диалог поиска (при этом стоит реализовать такие особенности, как раскрытие дополнительных параметров для поиска, по нажатию на кнопку «Больше>>», различные вариации поиска и др.) – см. рис. 2.9 или нажмите «Ctrl+H» в MS Word.

Рис. 2.9. Диалог поиска и замены

2.2.1 Создание формы

Создадим пустой проект, назовем его «Find».

Добавьте в файл проекта: greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

либо QT += core gui – в зависимости от версии Qt.

Для того чтобы подключить новую форму к вашей программе следует: щелкнуть правой кнопкой мыши на корневой папке в дереве проектов (см. рис. 3.10), затем выбрать «Добавить новый…», в появившемся окне выбрать соответственно «Qt» и «Класс формы Qt Designer» (рис. 3.11).

Рис. 2.10. Добавление файлов к проекту

Рис. 2.11. Подключение новой формы

Затем задайте имя класса: «Find_Dialog», соответственно файл формы будет носить имя «find_dialog.ui». Такие же имена, но с другим расширением будут иметь файлы заголовочный и исходников (рис. 2.12).

Рис. 2.12. Подключение новой формы. Выбор названия класса

2.2.2. Подключение формы

Собственно само подключение реализуется так (в созданном вами файле main.cpp, например):

#include <QWidget> //или #include <QtGui> для версии Qt ниже 5.0

#include <QApplication>

#include "find_dialog.h"

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

Find_Dialog form_for_find;

form_for_find.show();

return app.exec();

}

2.2.3. Наполнение формы

Добавте на форму элементы, как минимум, указанные на рис. 2.13, как максимум – на рис. 2.9.

2.2.4. Создание динамически изменяемых окон

1. Для того чтобы настроить видимость виджета единоразово стоит воспользоваться методом setVisible(bool).

Это странно: в Qt в инспекторе свойств вы не найдете свойство visible – приходится устанавливать его вручную, вызывая для объекта метод setVisible(bool) в конструкторе.

2. Зайдите в режим изменения сигналов и слотов на форме: нажмите на 2 кнопку – или F4.

3. Соедините кнопку «Больше» и виджет, на котором вы размещали дополнительные настройки поиска (рис. 2.13).

Рис. 2.13. Создание соединений

4. Настройте соединение (рис. 2.14).

Рис. 2.14. Настройка соединений

5. Настройте свойство checkable для кнопки «Больше», установив у него значение true – тем самым вы укажете, что кнопка при клике по ней будет оставаться в нажатом положении, при повторном – в отжатом, соответственно.

6. Используя компоновку , добейтесь фиксированного расположения элементов на экране.

7. Если вы хотите, чтобы у вашей формы были фиксированные размеры, необходимо будет дописать следующий код в конструкторе класса Find_Dialog:

layout()->setSizeConstraint(QLayout::SetFixedSize);

8. Для того чтобы проверить, есть ли текст для поиска, и, соответственно, можно ли нажимать кнопку «Поиск»:

Find_Button->setEnabled(!(Find_lineEdit->text().isEmpty()));

P.S. Если у вас не получается реализовать расширяемое окно – то посмотрите: QT 4: программирование GUI на С++, 31 с.

P.P.S. Как вы, наверное, заметили на формах созданных в Qt Designer корректно отображаются символы кириллицы – все потому, что он сам проводит перекодировку символов. Это его еще один несомненный плюс.

Это полезно: если вы когда-нибудь увидите на экране нечто подобное рис. 2.15, это значит, что вам, скорее всего, следует ответить «Нет», иначе программа компилироваться не будет.

Рис. 2.15. Перенос проекта

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]