Russian Qt Forum
Сентябрь 30, 2024, 20:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перебрать все элементы слоя...  (Прочитано 6383 раз)
Nub
Гость
« : Март 29, 2009, 13:04 »

есть QVBoxLayout и на нем куча QLineEdit'ов, как их все перебрать циклом чтобы изменить некоторые свойста?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #1 : Март 29, 2009, 13:24 »

Если лэйбелов, реально целая куча, то возможно правильнее будет организовать список QList на указатели этих объектов:

Код:
private:
...
    QList<QLabel *> m_arrLabels;
...

Затем в конструкторе вставляешь их в свой QVBoxLayout:
Код:
    QVBoxLayout *labelLayout = new QVBoxLayout;
    for (int i = 0; i < n; ++i)
    {
        QLabel *pl = new QLabel("...");
        m_arrLabels.append(pl);
        labelLayout->addWidget(pl);
    }   
Обращаться к i ому объекту можно так:
Код:
    m_arrLayout[i]->set.....
Ну дальше всё понятно, думаю...
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Rcus
Гость
« Ответ #2 : Март 29, 2009, 13:25 »

Итерация по QLayoutItem через QLayout::itemAt(), QLayout::count(), апкаст QLayoutItem::widget() при помощи qobject_cast?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #3 : Март 29, 2009, 13:25 »

Ой, пардон, там же QlineEdit ы  Смеющийся Ну это не принципиально
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #4 : Март 29, 2009, 13:51 »

Всё намного проще.

*.h

Код:
QList <QLineEdit *> m_list;

*.cpp

Код:
m_list = findChildren<QLineEdit *>();

А дальше обычный перебор списка с помощью итераторов.
Записан
Nub
Гость
« Ответ #5 : Март 29, 2009, 14:56 »

m_list = findChildren<QLineEdit *>();
так работает но получает список всех QLineEdit'ов на виджете, а если делаю
m_list = ui->leLayout->findChildren<QLineEdit *>();
то получаю пустой список. Грустный
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.123 секунд. Запросов: 22.