Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: niXman от Декабрь 05, 2009, 09:05



Название: Внешний вид формы по сценарию.
Отправлено: niXman от Декабрь 05, 2009, 09:05
Всем привет.
В продолжение мною же созданной темы: http://www.prog.org.ru/topic_11540_0.html
От этого способа отказался. Т.к. существующие ГУИ сложно изменять тем способом.

Вот, посетила новая мысля. Зацените ;)

В конструкторе формы, после создания ГУИ контролов, вставляем одну единственную функцию, к примеру "modifyGui()". Которая, в свою очередь, выполняет следующее:
1. Получает список чаилдов.
2. Определяет, является ли этот объект ГУИ объектом?
3. Если ДА -
3.1. Получает его имя.
3.2. Смотрит, есть ли(в своей БД) для объекта с этим именем, новые параметры.
3.3. Если есть - Применяет.

отсюда возникли вопросы:
1. Как получить список чаилдов? (const QObjectList & QObject::children() -  ?)
2. Как определить, является ли объект ГУИшным?
3. Чего я не учел?

Всем спасибо за внимание.


Название: Re: Внешний вид формы по сценарию.
Отправлено: BRE от Декабрь 05, 2009, 09:42
отсюда возникли вопросы:
1. Как получить список чаилдов? (const QObjectList & QObject::children() -  ?)
2. Как определить, является ли объект ГУИшным?
3. Чего я не учел?
Код
C++ (Qt)
QList<QWidget *> all = parentWidget.findChildren<QWidget *>();



Название: Re: Внешний вид формы по сценарию.
Отправлено: niXman от Декабрь 05, 2009, 09:44
Это ответ на какой вопрос?


Название: Re: Внешний вид формы по сценарию.
Отправлено: niXman от Декабрь 05, 2009, 09:45
Ааа... Т.е. вернет только список виджетов?
А виджеты все визуальные?(наверное тупой вопрос. но мало ли...)


Название: Re: Внешний вид формы по сценарию.
Отправлено: BRE от Декабрь 05, 2009, 09:52
Ааа... Т.е. вернет только список виджетов?
А виджеты все визуальные?(наверное тупой вопрос. но мало ли...)
Да.
+ можно еще указывать имена для объектов и искать по ним:
Код
C++ (Qt)
QList<QWidget *> widgets = parentWidget.findChildren<QWidget *>("widgetname");


Название: Re: Внешний вид формы по сценарию.
Отправлено: niXman от Декабрь 05, 2009, 09:54
Ух ты!
Половина проблемы решена.


Название: Re: Внешний вид формы по сценарию.
Отправлено: lit-uriy от Декабрь 05, 2009, 09:58
ещё есть QObject::isWidget(), работающий значительно быстрее других способов определения наследования от QWidget. Так написано в описании к методу.


Название: Re: Внешний вид формы по сценарию.
Отправлено: niXman от Декабрь 05, 2009, 10:04
Да, быстрее.
Но называется он: bool QObject::isWidgetType () const