Библиотека сайта rus-linux.net
Сигналы и слоты |
Создание приложения |
Сигналы и слоты
Сигналы и слоты используются для связи между объектами Qt. Механизм сигналов и слотов является важнейшей возможностью Qt и, возможно, тем, чем Qt больше всего отличается от остальных инструментариев, часто использующих использующих механизмы обратной связи. Сигналы исходят от объектов, когда происходит какое-то событие, например, пользователь печатает что-то в поле ввода или нажимает кнопку. Слот — это просто функция, вызываемая в ответ на определенный сигнал.
Теперь, когда добавлены все необходимые виджеты и создан макет формы, остается создать соединения сигналов и слотов. Это можно сделать вручную при помощи функции connect(), но в Qt Designer есть простой и эффективный способ — утилита соединения (Connection Tool). Для ее запуска либо нажмите кнопку на панели инструментов (на ней нарисована красная стрелка и зеленый прямоугольник), либо выберите пункт меню Tools => Connect Signals/Slots, либо просто нажмите F3. Чтобы создать соединение, щелкните на виджете, с которым должен взаимодействовать слот, перетащите появившуюся линию на форму и отпустите кнопку мыши.
Сначала займемся кнопкой Create!. Щелкните на значке Connect Signal/Slot, выберите соответствующий пункт из меню Tools или нажмите F3. Затем щелкните на кнопке Create! и перетащите линию за пределы формы. Когда вы отпустите кнопку мыши, на экране появится диалог, показанный на рис. 17.
Нам нужно создать слот (не забывайте, что слот — это функция), который будет
выводить подпись при нажатии кнопки Create!. Сигнал, который будет выдан при нажатии
кнопки, называется clicked()
(для виджета QPushButton существует пять сигналов), и
нам нужно создать для него слот и соединение.
Чтобы создать слот, щелкните на кнопке "Edit Slots". Появится окно создания слота (см. рис. 16).
Щелкните на кнопке New Slot и в списке появится новый слот. Вместо new_slot()
введите slotCreateSig()
. В выпадающем списке Access должно стоять значение public.
Когда вы нажмете ОК, вы вернетесь к диалогу View and Edit Connections, где в списке слотов увидите только
что созданный.
- Рис. 16: Создание слота
Рис. 17: Диалог просмотра и редактирования соединений
Чтобы создать соединение, нужно просто выбрать нужный сигнал
(в нашем случае — clicked()
) и слот
(созданный нами slotCreateSig()
).
Когда вы выбрали сигнал и слот, вы увидите, что слева появится
зеленая галочка. Теперь нажмите ОК.
Повторите ту же операцию для кнопки Cancel, используя сигнал clicked()
и слот close()
. На этом создание сигналов и слотов завершено.
Внимание
- Не забудьте сохранить форму!
Создание промежутков между виджетами |
Написание кода |