Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: qtист от Январь 27, 2010, 16:22



Название: Виджеты в QToolBar
Отправлено: qtист от Январь 27, 2010, 16:22
Создаётся QToolBar,туда пихаю разные виджеты с помощью
addWidget(tt),их может быть туева куча и всякие разные.

Как вообще узнать,сколько туда их напихано,и достучаться до определённого,
например до пятого(QPixmap) и перерисовать его(вставить другой QPixmap. :'(


Название: Re: Виджеты в QToolBar
Отправлено: BRE от Январь 27, 2010, 17:22
Создаётся QToolBar,туда пихаю разные виджеты с помощью
addWidget(tt),их может быть туева куча и всякие разные.

Как вообще узнать,сколько туда их напихано,и достучаться до определённого,
например до пятого(QPixmap) и перерисовать его(вставить другой QPixmap. :'(
Можно сохранять указатели на нужные (или все) виджеты;
Можно сохранять указатели на действия, которые возвращает метод addWidget и получать указатель на него с помощью QToolBar::widgetForAction;
Можно получить список всех дочерних виджетов на QToolBar и найти нужный, например, по имени используя QObject::findChildren ( const QString & name = QString() ) const.


Название: Re: Виджеты в QToolBar
Отправлено: Akaiten от Январь 27, 2010, 17:42
Код
C++ (Qt)
QToolBar toolbar;
...
// Получаем список действий, каждому widget'у на тулбаре соответствует действие
QList<QAction *> actList = toolbar.actions();
 
// Ищем в списке элементы типа QWidgetAction *, например через qobject_cast
foreach (QAction *act, actList)
{
 if (QWidgetAction *widgetAction = qobject_cast<QWidgetAction *>(act))
 {
    // твой widget
    QWidget *widget = widgetAction->defaultWidget();
 }
}
 


Название: Re: Виджеты в QToolBar
Отправлено: qtист от Январь 27, 2010, 17:47
получилось:
QList<MultiLabel *> allvidget = toolTM.at(0)->findChildren<MultiLabel *>();
MultiLabel  - виджеты
toolTM - одна из тулбаров

спасибо  ::)