Qt: Динамическое управление видимостью пользовательских элементов в зависимости от некоторого параметра
Дано:
Приложение на Qt с многочисленными кнопками QPushButton, c контекстными QMenu, привязанными к многочисленным QTableView, к которому прицеплены элементы QAction, которых тоже много, и видимость которых зависит от контекста QTableView. Все это прекрасно работало.
Однако возникла необходимость управлять видимостью всех этих элементов от типа пользователя, который определяется в момент запуска программы.
Вопрос, как это проще сделать с минимальными изменениями в исходной программе ?
Пока единственное, что я вижу - это сделать несколько списков по числу типов пользователей и в конструкторе заранее распихивать управляющие элементы по этим спискам. И далее анализировать принадлежность к этим спискам, когда потребуется управлять видимостью элемента с помощью функции setVisible(true/false), которая есть у QPushButton и QAction. Однако беда в том, у них нет общего предка, с функцией setVisible. Очень бы не хотелось создавать несколько раздельных списков для QPushButton и QAction. Нет в Qt более простых средств для решения этой проблемы ?
Ответы (1 шт):
Как вариант, можно устанавливать свойство через QObject::setProperty ():
action->setProperty("visible", false)
widget->setProperty("visible", false)