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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выровнять QLabel и QLineEdit по центру  (Прочитано 9340 раз)
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.03 секунд. Запросов: 20.