Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: TranE91 от Апрель 26, 2011, 19:01



Название: Добавление стд. виджетов на свой виджет.
Отправлено: TranE91 от Апрель 26, 2011, 19:01
Пытаюсь смонтировать собственный виджет. Структура его такова:
Код
C++ (Qt)
class A: public QWidget
{
/**/
}
class B:
{
/**/
}
class C:
{
QLineEdit *le;
}
 
ессесно в третий класс мне нужно передать указатель на первый. С класс доступен только через Б. Вся трабла в том, когда я в конструкторе инициализирую QLineEdit, как составляющую класса A:
Код
C++ (Qt)
C:C(QWidget *parent_A)
{
/**/
le = new QLineEdit(parent_A);
// и прорисовочка всякой ерундятины
}
 
он зараза не добавляет его на общую форму.
З.Ы. сначала думал, что вся фишка в динамике, т.к. попробовал в Мэйне инициализировать в ВОИД функции QLineEdit стат. и динамич., со статиком я потерпел фиаско. В чем же проблема ?


Название: Re: Добавление стд. виджетов на свой виджет.
Отправлено: GreatSnake от Апрель 26, 2011, 19:52
Чего-то намудрёно как-то.

Цитировать
он зараза не добавляет его на общую форму.
Компоновка виджетов на форме в Qt делается через лейауты.


Название: Re: Добавление стд. виджетов на свой виджет.
Отправлено: TranE91 от Апрель 26, 2011, 21:29
зафейлил, не пояснил всю опасность ситуации.
Вообщем, класс А, это и есть мой "виджет", он имеет в себе список классов Б, в свою очередь класс Б имеет список классов С.
Вот мне и нужно сделать так, чтобы класс С, добавлял на форму класса А ЛайнЭдиты, в опр. место.
Через Лейауты каким макаром то это представить то можно? Унаследовать С от какого-либо виджета, а класс А от Лейаута?


Название: Re: Добавление стд. виджетов на свой виджет.
Отправлено: TranE91 от Апрель 27, 2011, 04:05
Хммм... А как же в этих самых Лэйаутах менять позицию? Пробую setGeometry, он как стоял на месте, так и стоит. 


Название: Выравнивание Лэйаутов
Отправлено: TranE91 от Апрель 27, 2011, 09:05
Добавляю на виджет Лэйаут. Каким способом можно изменить его позицию на исх. виджете? Пробую стд. setGeometry ниче не меняется.


Название: Re: Добавление стд. виджетов на свой виджет.
Отправлено: Fat-Zer от Апрель 27, 2011, 09:15
прочитайте, что такое лейауты и для чего они нужны... в первую очередь, их придумали, чтобы не управлять положением отдельных виджетов вручную.


Название: Re: Добавление стд. виджетов на свой виджет.
Отправлено: TranE91 от Май 02, 2011, 15:13
Вернусь к этому вопросу. Из практики понял, что добавление виджетов, нормально происходит, если я их инициализирую в конструкторе. Если же я пытаюсь, в каком-либо из предыдущих классов, инициализировать следующий класс, содержащий стд. виджеты, такие как QLabel, QLineEdit...., то дебагер говорит мне, что они якобы добавлены, но на общей форме они отсутствуют, т.е. не отображаются. Все нормально и без проблем проходит, когда я пытаюсь все это проделать в конструкторах предыдущих классов.
Как обойти эту проблему, а точнее, как заставить, после добавления элементов через функции, ОТОБРАЖАТЬ стд. виджеты на общей форме?


Название: Re: Добавление стд. виджетов на свой виджет.
Отправлено: TranE91 от Май 03, 2011, 06:17
}{MMMMMMMM.........  и все же, как все-таки в Qt правильно добавлять виджет класса наследника к отцовскому классу?