Как управлять состоянием интерфейса в программе на QT5?
Как управлять состоянием интерфейса в программе, написанной на QT5.
Проблема в следующем: когда пользователь нажимает на кнопку, выбирает пункт меню, удаляет все символы из поля и т.д., необходимо реагировать на эти действия (делать активным или неактивным какой-то элемент интерфейса, очищать поле ввода и т.д).
Есть какой-нибудь паттерн для этого?
Конечно, я пользуюсь возможностями сигнал-слотовой модели, но пришел к тому, что необходимо писать для многих виджетов несколько различных сигналов, причем иногда схожих друг с другом, чтобы совпадала сигнатура данного сигнала и принимающего слота.
У меня есть класс унаследованный от QDialog, на котором размещаются элементы интерфейса (QLineEdit, QPushButton и т.д.) Хочется как-то грамотно (с точки зрения лаконичности и поддержки кода в дальнейшем) управлять состоянием интерфейса (нажал на QPushButton, в этот момент, другой QPushButton стал активным, еще один QPushButton неактивным, какой-нибудь QLineEdit отчистился).
Где и как правильно прописать всю эту логику?
Что значит классы контроллов? Что они делают?
Например, QLineEdit стал пустым, нам нужно сделать неактивным QPushButton (установить setEnabled в False), это значит нужно написать сигнал для QLineEdit с параметром False, который будет испускаться при очищении QLineEdit. Не слишком ли много сигналов потребуется?
Hemul GM, не могу не согласиться. Но вопрос не в быстродействии, а в качестве кода c точки зрения лаконичности и поддержки кода в дальнейшем. Не будет ли это похоже на "написать кучу if-else"?
Семен, нет. Ты реагируешь на конкретное событие. Только при одном событии ты будешь знать пустое там поле, или нет.
Можешь по-идиотски, сделать таймер и проверять каждые пол секунды поле.