Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Eretic от Октябрь 24, 2012, 19:40



Название: QGridLayout
Отправлено: Eretic от Октябрь 24, 2012, 19:40
Приветствую всех кто зашёл в темку.

Прикладываю скрин из Qt дизайнера.
Красным обозначается QGridLayout. 
Проблема в том, что все элементы распологаются посередине. Мне же нужно чтобы кнопки и лейбл были по краям а текстовое поле полностью заполняло середину.

Как этого можно добиться?

Спасибо.

(http://file:///home/eretic/test.jpg)


Название: Re: QGridLayout
Отправлено: Bepec от Октябрь 24, 2012, 20:57
Spacer между вверху и внизу. Полю sizePolicy expande *2


Название: Re: QGridLayout
Отправлено: Eretic от Октябрь 24, 2012, 21:29
Spacer между вверху и внизу. Полю sizePolicy expande *2

Спасибо в дизайнере разобрался. А можно ли сделать это руками не используя дизайнер?

Код:
mySpacer=new QSpacerItem(0,0);
myLay=new QGridLayout(myWidget);
myLay->addItem(mySpacer);

Выдаёт ошибку
Цитировать
/home/user/SVN_proj/qt/IllusionCafe_Server-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK_______/../../../QtSDK/Desktop/Qt/4.8.1/gcc/include/QtGui/qgridlayout.h:144: ошибка: 'virtual void QGridLayout::addItem(QLayoutItem*)' is protected

Заранее спасибо!


Название: Re: QGridLayout
Отправлено: GreatSnake от Октябрь 24, 2012, 21:56
Ну, а что, описание не судьба посмотреть?
Код
C++ (Qt)
void QGridLayout::addItem ( QLayoutItem * item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0 )


Название: Re: QGridLayout
Отправлено: Eretic от Октябрь 24, 2012, 22:21
Ну, а что, описание не судьба посмотреть?
Код
C++ (Qt)
void QGridLayout::addItem ( QLayoutItem * item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = 0 )

Хорошо. Но как его применить ваще хз. Запарился уже сегодня с компоновками. Допустим у меня текстовое поле и под ним 2 кнопки. Тогда добавлять спейсер между кнопками вторым столбцом?

Код:
mySpacer=new QSpacerItem(0,0);

myLay=new QGridLayout(myWidget);
myLay->addWidget(myTextEdit,0,0,0,2);
myLay->addWidget(firstButton,1,0);
myLay->addItem(mySpacer, 1, 1, 1, 1,Qt::AlignLeft);
myLay->addWidget(secondButton,1,2);

Не могу никак достичь просветления в компоновке. Разжуйте пожалуйста. Буду очень благодарен.


Название: Re: QGridLayout
Отправлено: Bepec от Октябрь 24, 2012, 23:02
Берешь, рисуешь в дизайнере как надо. Потом идёшь в каталог с твоим ui и выполняешь команду uic ТвойUI.ui >> 1.txt.

Смотришь какой код был сгенерен, делаешь свой наподобие (или тупо копируешь).


Название: Re: QGridLayout
Отправлено: kambala от Октябрь 25, 2012, 00:24
лейбл и кнопки прижимаешь к соответствующим краям (левые Qt::AlignLeft, правые Qt::AlignRight), а для текстового поля выставляешь спаны (rowSpan = 1, columnSpan = 2). также при желании можно spacing/margins задать нулевые.


Название: Re: QGridLayout
Отправлено: Eretic от Октябрь 25, 2012, 08:46
Берешь, рисуешь в дизайнере как надо. Потом идёшь в каталог с твоим ui и выполняешь команду uic ТвойUI.ui >> 1.txt.

Смотришь какой код был сгенерен, делаешь свой наподобие (или тупо копируешь).

Спасибо огромное. Я не знал об этом способе! Благодарствую!