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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выровнять QLabel и QLineEdit по центру  (Прочитано 8913 раз)
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« : Сентябрь 21, 2016, 09:57 »

Здравствуйте
Надо чтобы QLabel и QLineEdit, разные по длине, рассматривались в QVBoxLayout как 1 виджет, чтобы можно было этот общий виджет выровнять по центру. Может лучше без QVBoxLayout обойтись. Через QGridLayout тоже не получилось, потому что QLineEdit намного длиннее.
Можете подсказать, как лучше сделать?
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 133


Просмотр профиля
« Ответ #1 : Сентябрь 21, 2016, 10:25 »

Поместить эти два виджета в отдельный компоновщик (layout), и уже его добавлять в Ваш QVBoxLayout через addLayout.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Сентябрь 21, 2016, 10:38 »

Или использовать QFormLayout и его addRow
Записан

YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #3 : Сентябрь 21, 2016, 10:49 »

Поместить эти два виджета в отдельный компоновщик (layout), и уже его добавлять в Ваш QVBoxLayout через addLayout.
Какой должен быть компоновщик layout? Если QHBoxLayout, то растягивается QLineEdit. Если вместо QLineEdit ставить QSpinBox, то появляется пробел между QLabel и QSpinBox, которого необходимо избежать
Записан
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #4 : Сентябрь 21, 2016, 11:01 »

Или использовать QFormLayout и его addRow
В этом случае QLineEdit растягивается при растягивании окна. Вместо него может быть QSpinBox и это будет некрасиво.
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 133


Просмотр профиля
« Ответ #5 : Сентябрь 21, 2016, 11:09 »

На вскидку, настройка выравнивания (setAlignment) для компоновщика и sizePolicy, minimumSize, maximumSize для виджетов.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #6 : Сентябрь 21, 2016, 12:29 »

Поместить эти два виджета в отдельный компоновщик (layout), и уже его добавлять в Ваш QVBoxLayout через addLayout.
Какой должен быть компоновщик layout? Если QHBoxLayout, то растягивается QLineEdit. Если вместо QLineEdit ставить QSpinBox, то появляется пробел между QLabel и QSpinBox, которого необходимо избежать

Добавьте слева и справа пружинки, тогда по идеи, они не будут растягиваться по ширине:
Код
C++ (Qt)
hLayout.addStretch();
hLayout.addWidget(label);
hLayout.addWidget(lineEdit);
hLayout.addStretch();

Еще у виджетов есть политика растягивания -- setSizePolicy и установка QSizePolicy::Minimum не даст виджету занять все доступное ему место.

А лучше всего открыть дизайнер Qt и в нем накидать форму -- удобнее настраивать и или ей воспользоваться, или посмотреть какой код формы был сгенерирован.
Записан

YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #7 : Сентябрь 21, 2016, 12:32 »

Спасибо, помогло
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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