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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Borland C++ Builder] как управлять компоновкой контролов  (Прочитано 5432 раз)
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« : Декабрь 21, 2014, 14:24 »

Ребята подскажите как управлять компоновкой визуальных элементов (controls) на форме, вроде в Билдере нет аналога QLayout.
визуальные элементы создаются в коде.
Нужно в цикле намолотить "строки" состоящие из метки (TLabel) и поля ввода (TEdit):
Код
C++ (Qt)
for(unsigned int i = 0; i < count; ++i){
   TLabel *label = new TLabel(this);
   label->Parent = this;
   label->Caption = names[i];
   TAnchors left;
   left << akLeft << akTop << akBottom;
   label->Anchors = left;
 
   TEdit *edit = new TEdit(this);
   edit->Parent = this;
   edit->Text = names[i];
   edit->Anchors << akRight << akTop << akBottom;
}
 

Пытался играть с якарями (Anchors) и выравниванием (Align), но стоит только задать выравнивание, как элементы (метка/поле ввода) накладываются друг на друга.

Может кто-то помнит, как это делать в Bilder-е?
Записан

Юра.
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #1 : Декабрь 22, 2014, 09:56 »

Каждую пару (метка, редактор) располагаете на панели TPanel. Выравнивание задаете для панели, например alTop.
Чтобы панель не была видна, убираете bevelinner, bevelouter.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Декабрь 22, 2014, 17:52 »

Располагать пары придётся по координатам (Left/Top)?
Записан

Юра.
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #3 : Декабрь 22, 2014, 21:47 »

Да.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Декабрь 22, 2014, 22:59 »

Эх, помнится, очень радовался концепции лайотов, когда перешел с билдера на Кьют. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Декабрь 22, 2014, 23:10 »

Эх, помнится, очень радовался концепции лайотов, когда перешел с билдера на Кьют. Улыбающийся
Её придумал Бог и передал людям
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Декабрь 26, 2014, 17:39 »

Если терпежа хватит, то добью, то что откровенно сговнил за день работы - жалкое подобие QVBoxLayout/QHBoxLayout.
Пока не умеет растягиваться на родителе (т.к. у родителя нет setLayout() ), но уже компонует под размер содержимого.

П.С.
Чувак, для которого я делал на Билдере пример использования Qt-шной DLL-ки, долго вкуривал, как вообще возможно чтоб само размещалось, потом начал свою прогу переделывать под использование моей поделки.
Записан

Юра.
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #7 : Декабрь 26, 2014, 21:24 »

Те контролы, для которых задано выравнивание, растягиваются сами. Для остальных в обработчике изменения родителя (onresize, кажется, не помню) рассчитываются и устанавливаются размеры вручную.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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