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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Добавление стд. виджетов на свой виджет.  (Прочитано 3638 раз)
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 стат. и динамич., со статиком я потерпел фиаско. В чем же проблема ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Апрель 26, 2011, 19:52 »

Чего-то намудрёно как-то.

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

Qt 5.11/4.8.7 (X11/Win)
TranE91
Гость
« Ответ #2 : Апрель 26, 2011, 21:29 »

зафейлил, не пояснил всю опасность ситуации.
Вообщем, класс А, это и есть мой "виджет", он имеет в себе список классов Б, в свою очередь класс Б имеет список классов С.
Вот мне и нужно сделать так, чтобы класс С, добавлял на форму класса А ЛайнЭдиты, в опр. место.
Через Лейауты каким макаром то это представить то можно? Унаследовать С от какого-либо виджета, а класс А от Лейаута?
Записан
TranE91
Гость
« Ответ #3 : Апрель 27, 2011, 04:05 »

Хммм... А как же в этих самых Лэйаутах менять позицию? Пробую setGeometry, он как стоял на месте, так и стоит. 
Записан
TranE91
Гость
« Ответ #4 : Апрель 27, 2011, 09:05 »

Добавляю на виджет Лэйаут. Каким способом можно изменить его позицию на исх. виджете? Пробую стд. setGeometry ниче не меняется.
Записан
Fat-Zer
Гость
« Ответ #5 : Апрель 27, 2011, 09:15 »

прочитайте, что такое лейауты и для чего они нужны... в первую очередь, их придумали, чтобы не управлять положением отдельных виджетов вручную.
Записан
TranE91
Гость
« Ответ #6 : Май 02, 2011, 15:13 »

Вернусь к этому вопросу. Из практики понял, что добавление виджетов, нормально происходит, если я их инициализирую в конструкторе. Если же я пытаюсь, в каком-либо из предыдущих классов, инициализировать следующий класс, содержащий стд. виджеты, такие как QLabel, QLineEdit...., то дебагер говорит мне, что они якобы добавлены, но на общей форме они отсутствуют, т.е. не отображаются. Все нормально и без проблем проходит, когда я пытаюсь все это проделать в конструкторах предыдущих классов.
Как обойти эту проблему, а точнее, как заставить, после добавления элементов через функции, ОТОБРАЖАТЬ стд. виджеты на общей форме?
Записан
TranE91
Гость
« Ответ #7 : Май 03, 2011, 06:17 »

}{MMMMMMMM.........  и все же, как все-таки в Qt правильно добавлять виджет класса наследника к отцовскому классу?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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