crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Список всех элементов виджета
RazrFalcon
  опции профиля:
сообщение 1.10.2011, 19:00
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Как получить список всех элементов виджета?

Задумка такова, что есть окно настроек, с множеством элемнтов (чекбоксы, комбобоксы, спинбоксы) и при нажатии "Ок", нужно получить значение каждого элемента (число для спина, bool для чекбокса и номер элем. комбобокса).
Как это можно сделать?

Можно сделать через findChildren нужного виджета, но тогда придется писать что то в духе:
QList<QCheckBox *> chBoxes = stackedWidget->widget(page)->findChildren<QCheckBox *>(); //page - это нормер страницы, в данном случае QStackedWidget'а
QList<QComboBox *> cmbBoxes = stackedWidget->widget(page)->findChildren<QComboBox *>();
QList<QSpinsBox *> spins = stackedWidget->widget(page)->findChildren<QSpinsBox *>();
И дальше обрабатывать эти списки.

Интересует более лаконичное, элегантное, правильное решение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 1.10.2011, 22:49
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


можно ещё так:
foreach(QWidget *w, stackedWidget->widget(page)->findChildren<QWidget *>()){
    if (w->inherits("QSpinBox"))
        qDebug() << "QSpinBox [" << qobject_cast<QSpinBox *>(w)->value() << "]";
    else  if (w->inherits("QComboBox"))
        qDebug() << "QComboBox [" << qobject_cast<QComboBox *>(w)->currentText() << "]";
    else if
    ...
    else
        qDebug() << "Widget is" << w->className();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 10:12