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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGridLayout  (Прочитано 5606 раз)
Eretic
Гость
« : Октябрь 24, 2012, 19:40 »

Приветствую всех кто зашёл в темку.

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

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

Спасибо.

Записан
Bepec
Гость
« Ответ #1 : Октябрь 24, 2012, 20:57 »

Spacer между вверху и внизу. Полю sizePolicy expande *2
Записан
Eretic
Гость
« Ответ #2 : Октябрь 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

Заранее спасибо!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Октябрь 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 )
Записан

Qt 5.11/4.8.7 (X11/Win)
Eretic
Гость
« Ответ #4 : Октябрь 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);

Не могу никак достичь просветления в компоновке. Разжуйте пожалуйста. Буду очень благодарен.
Записан
Bepec
Гость
« Ответ #5 : Октябрь 24, 2012, 23:02 »

Берешь, рисуешь в дизайнере как надо. Потом идёшь в каталог с твоим ui и выполняешь команду uic ТвойUI.ui >> 1.txt.

Смотришь какой код был сгенерен, делаешь свой наподобие (или тупо копируешь).
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Октябрь 25, 2012, 00:24 »

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Eretic
Гость
« Ответ #7 : Октябрь 25, 2012, 08:46 »

Берешь, рисуешь в дизайнере как надо. Потом идёшь в каталог с твоим ui и выполняешь команду uic ТвойUI.ui >> 1.txt.

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

Спасибо огромное. Я не знал об этом способе! Благодарствую!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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