Russian Qt Forum

Qt => Общие вопросы => Тема начата: Logo от Сентябрь 09, 2004, 15:38



Название: Автоматическая генерация содержимого формы
Отправлено: Logo от Сентябрь 09, 2004, 15:38
Работаю над созданием программы, которая генерирует содержание формы на основе конфигурационного файла. Генерирует элементы типа QLineEdit, QCheckBox и т. д. Возникает проблема с генерацией имен для этих элементов. Конечно, можно воспользоваться QPtrList, но в дальнейшем достаточно сложно обслуживать и контролировать эти элементы.

С другой стороны можно воспользоваться методами типа QBoxLayout, QGrid и т. д. Эти вещи позволяют творить дочерние элементы без уникальных имен и указателей на них. Например:

QGrid *main = new QGrid( 2 ); //создает в две колонки
     new QLabel( "One", main );
     new QLabel( "Two", main );
     new QLabel( "Three", main );
     new QLabel( "Four", main );
     new QLineEdit( "Five", main );

Получается тема в виде набора элементов расположенных в две колонки.

Получается замечательно, но у меня не хватает ума извлечь данные из какого-либо из этих элементов. Я подозреваю что есть методы контроля виджетов, но не знаю о них ничего.

В общем, подскажите как извлечь данные из элементов из QGrid или как создавать уникальные имена, а то я сосем повис.


Название: Автоматическая генерация содержимого формы
Отправлено: EugeneVC от Сентябрь 09, 2004, 16:45
можно например так

QLabel *p=new QLabel( "One", main );

тоесть сохраняя указатели на эти элементы


Название: Re: Автоматическая генерация содержимого формы
Отправлено: rjaan от Сентябрь 09, 2004, 17:58
Цитата: "Logo"

Получается замечательно, но у меня не хватает ума извлечь данные из какого-либо из этих элементов. Я подозреваю что есть методы контроля виджетов, но не знаю о них ничего.

В общем, подскажите как извлечь данные из элементов из QGrid или как создавать уникальные имена, а то я сосем повис.

Ну на счет ума это не к нам :wink:  А вот по QT:Там идет наследованиеQGrid: public QFrame: public QWidget. Копай в этих двух наследуемых классов. Во первых тебе доступны по public и protection методы QFrame и методы по public QWidget, в том числе переопределенные методы QWidget в QFrame. Так что по идеи ты должен все вытянуть, то что позволяют эти методы в пределах области видимости этих двух наследуемых классов.
В документации все есть... Так что можно такое забубенить... 8)


Название: Автоматическая генерация содержимого формы
Отправлено: Logo от Сентябрь 10, 2004, 12:41
Цитата: "EugeneVC"
можно например так

QLabel *p=new QLabel( "One", main );

тоесть сохраняя указатели на эти элементы


Да, конечно я так пробовал, но как я могу автоматически создать необходимое количество указателей?

rjaan, я воспользуюсь твоим советом и, затем, покажу что получилось.

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


Название: Автоматическая генерация содержимого формы
Отправлено: EugeneVC от Сентябрь 10, 2004, 15:13
Цитата: "Logo"
Цитата: "EugeneVC"
можно например так

QLabel *p=new QLabel( "One", main );

тоесть сохраняя указатели на эти элементы


Да, конечно я так пробовал, но как я могу автоматически создать необходимое количество указателей?
Цитировать


Используя список с указателями, посмотри на QValueList