Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: vovan1982 от Июня 21, 2011, 09:40



Название: QGridLayout вставка между строк
Отправлено: vovan1982 от Июня 21, 2011, 09:40
Здравствуйте.

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

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

Widget1
Widget2
Widget3
Widget4

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

Widget1
Widget2
Widget5
Widget3
Widget4

при использовании addWidget(widget,row,column), Widget5 ложится поверх Widget3.


Название: Re: QGridLayout вставка между строк
Отправлено: Пантер от Июня 21, 2011, 09:42
Код приведи.


Название: Re: QGridLayout вставка между строк
Отправлено: vovan1982 от Июня 21, 2011, 09:48
Во вложении весь проект, он пока маленький, суть проекта - фильтр с динамически создаваемыми полями.


Название: Re: QGridLayout вставка между строк
Отправлено: Пантер от Июня 21, 2011, 10:02
В твоем случае нужно использовать QVBoxLayout.


Название: Re: QGridLayout вставка между строк
Отправлено: vovan1982 от Июня 21, 2011, 10:11
подскажите правильно ли я понял,
мне нужно в каждую строку QVBoxLayout, вставлять QGridLayout и уже в неё вставлять виждеты?

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


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


Название: Re: QGridLayout вставка между строк
Отправлено: vovan1982 от Июня 21, 2011, 10:49
спасибо большое, insertWidget не заметил, сразу начал в сторону addWidget копать

буду разбираться дальше.


Название: Re: QGridLayout вставка между строк
Отправлено: Пантер от Июня 21, 2011, 13:06
QGridLayout тебе вообще не нужен.


Название: Re: QGridLayout вставка между строк
Отправлено: vovan1982 от Июня 21, 2011, 13:08
QGridLayout тебе вообще не нужен.

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

у меня ведь таблица из виджетов


Название: Re: QGridLayout вставка между строк
Отправлено: Пантер от Июня 21, 2011, 13:11
В своем коде замени QGridLayout на QVBoxLayout и делай не addWidget (widget, row, column), а addWidget (widget).


Название: Re: QGridLayout вставка между строк
Отправлено: vovan1982 от Июня 21, 2011, 13:22
В своем коде замени QGridLayout на QVBoxLayout и делай не addWidget (widget, row, column), а addWidget (widget).

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

тока осталась одна проблема, самая первая строка имеет на один элемент меньше чем все остальные, можно как нибудь в QGridLayout добавить пустую колонку?


Название: Re: QGridLayout вставка между строк
Отправлено: Пантер от Июня 21, 2011, 13:27
void QGridLayout::addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )


Название: Re: QGridLayout вставка между строк
Отправлено: DenisKh001 от Июня 21, 2011, 19:10
Можно объединить колонки как писал "Пантер", можно вставить пружинку в ячейку.
Для понимания как что работает я рисовал в Креаторе, смотрел файл ../*build-desktop/ui*.h, в нем код создания окна из которого можно понять как что создавать.


Название: Re: QGridLayout вставка между строк
Отправлено: vovan1982 от Июня 24, 2011, 15:13
спасибо Пантер, но columnSpan это немного не то что мне нужно было

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

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

Ещё раз большое спасибо за ответы.