Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Инициализация объектов в цикле

Автор: grio 26.11.2009, 7:04

Задача:
Нужно проинициализировать 20 кнопок на форме. Кнопки имеют имена pbtn1, pbtn2,...pbtn20;
Как обратится к каждой из них по имени и установить, например, видимость.

В идеале нужна функция, возвращающая ссылку на объект по его имени:

ObjByName("pbtn"+i).setVisible(true);

br,
grio.

Так, отлично, сам спрашиваю - сам отвечаю :)

T QObject::findChild ( const QString & name = QString() ) const

Раскрывающийся текст

T QObject::findChild ( const QString & name = QString() ) const

Возвращает дочерний объект, который может быть приведен к типу T and и имеет имя name или 0 если такой объект не найден. Пустая строка обозначает любое имя. Поиск выполняется рекурсивно.

Если существует более чем один дочерний объект соответствующий условию, то возвращается ближайший в иерархии. Если есть несколько равнозначных объектов в иерархии, будет возвращен один из них. В этом случает лучше использовать, findChildren().

В данном примере возвращается дочерний по отношению к parentWidget объект типа QPushButton с именем "button1":
QPushButton *button = parentWidget->findChild<QPushButton *>("button1");

В данном примере возвращается дочерний по отношению к parentWidget объект типа QListWidget:
QListWidget *list = parentWidget->findChild<QListWidget *>();

Внимание: Данная функция не доступна в MSVC 6. Если Вы работаете с указанным компилятором, используйте qFindChild().

См. также findChildren() и qFindChild().

Автор: niXman 26.11.2009, 7:36

QSignalMapper

Автор: Litkevich Yuriy 26.11.2009, 7:40

и ещё имеет смысл посмотреть штатный пример "Калькулятор" (там как раз много кнопочек)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)