Russian Qt Forum
Мая 09, 2025, 00:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Borland C++ Builder] как управлять компоновкой контролов  (Прочитано 5707 раз)
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

Сообщений: 5877


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


Просмотр профиля 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.059 секунд. Запросов: 23.