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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGridLayout вставка между строк  (Прочитано 9058 раз)
vovan1982
Гость
« : Июнь 21, 2011, 09:40 »

Здравствуйте.

Помогите пожалуйста ни как не могу сообразить как это можно реализовать.

Есть QGridLayout я в него руками (не через дизайнер) добавляю к примеру 4-е виджета

Widget1
Widget2
Widget3
Widget4

нужно вставить ещё один виджет между 2-м и 3-м, так чтобы получилось следующее

Widget1
Widget2
Widget5
Widget3
Widget4

при использовании addWidget(widget,row,column), Widget5 ложится поверх Widget3.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #1 : Июнь 21, 2011, 09:42 »

Код приведи.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vovan1982
Гость
« Ответ #2 : Июнь 21, 2011, 09:48 »

Во вложении весь проект, он пока маленький, суть проекта - фильтр с динамически создаваемыми полями.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #3 : Июнь 21, 2011, 10:02 »

В твоем случае нужно использовать QVBoxLayout.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vovan1982
Гость
« Ответ #4 : Июнь 21, 2011, 10:11 »

подскажите правильно ли я понял,
мне нужно в каждую строку QVBoxLayout, вставлять QGridLayout и уже в неё вставлять виждеты?

и ещё вопрос, а как в QVBoxLayout вставлять между строк?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Июнь 21, 2011, 10:41 »

подскажите правильно ли я понял,
мне нужно в каждую строку QVBoxLayout, вставлять QGridLayout и уже в неё вставлять виждеты?
Это уж как хочешь.
Цитировать
и ещё вопрос, а как в QVBoxLayout вставлять между строк?
void QBoxLayout::insertWidget ( int index, QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0 )
Записан

Qt 5.11/4.8.7 (X11/Win)
vovan1982
Гость
« Ответ #6 : Июнь 21, 2011, 10:49 »

спасибо большое, insertWidget не заметил, сразу начал в сторону addWidget копать

буду разбираться дальше.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #7 : Июнь 21, 2011, 13:06 »

QGridLayout тебе вообще не нужен.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vovan1982
Гость
« Ответ #8 : Июнь 21, 2011, 13:08 »

QGridLayout тебе вообще не нужен.

я извиняюсь может вопрос глупый но в qt я новичок,
а как без него можно обойтись?

у меня ведь таблица из виджетов
« Последнее редактирование: Июнь 21, 2011, 13:12 от vovan1982 » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #9 : Июнь 21, 2011, 13:11 »

В своем коде замени QGridLayout на QVBoxLayout и делай не addWidget (widget, row, column), а addWidget (widget).
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vovan1982
Гость
« Ответ #10 : Июнь 21, 2011, 13:22 »

В своем коде замени QGridLayout на QVBoxLayout и делай не addWidget (widget, row, column), а addWidget (widget).

немного исправил предыдущий пост, этот вариант мне бы подошёл если бы мне не нужно было в одну строку несколько виджетов вставлять, а так QVBoxLayout в качестве строк и отдельный QGridLayout в качестве столбцов для каждой строки вполне подходит.

тока осталась одна проблема, самая первая строка имеет на один элемент меньше чем все остальные, можно как нибудь в QGridLayout добавить пустую колонку?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #11 : Июнь 21, 2011, 13:27 »

void QGridLayout::addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
DenisKh001
Гость
« Ответ #12 : Июнь 21, 2011, 19:10 »

Можно объединить колонки как писал "Пантер", можно вставить пружинку в ячейку.
Для понимания как что работает я рисовал в Креаторе, смотрел файл ../*build-desktop/ui*.h, в нем код создания окна из которого можно понять как что создавать.
Записан
vovan1982
Гость
« Ответ #13 : Июнь 24, 2011, 15:13 »

спасибо Пантер, но columnSpan это немного не то что мне нужно было

DenisKh001 с пружинкой ещё сложнее стало Улыбающийся, а на счёт ui*.h это я знаю, уже давно там копаюсь.

Мне нужно было добавить просто пустую ячейку , с этим мне помог setColumnMinimumWidth, но после этого начались проблемы с попыткой автоматически устанавливать ширину пустой ячейки, в результате я немного пересмотрел внешний вид интерфейса и надобность в пустой ячейке отпала  Улыбающийся

Ещё раз большое спасибо за ответы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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