сетке. Координаты отсчитывоются с верхнего левого угла (по-
зиция (0,0)).
Теперь компилируем прогромму и запускаем. Вот что
должно получиться — рис. 1. Попробуйте изменить разме-
0
.
0
,
X Layout Example Not
©
0
0
t
First Button
)
Г
Fifth Button
V
( S e co n d Button
3
(
Sixth Button
)
(
Third Button
)
( Fourth Button
)
I t Рис.1
(
Seventh Button )
ры окна и посмотрите, как изменяются размеры и позиция
кнопок на нем.
Можно ли сделать так, чтобы один виджет занимал не-
сколько клеточек «сетки» (ХЗг
1
с
11
,ауоис? Конечно же, можно.
Юзаем ацами1с1СеШ^1ЦдеЬ. Попробуйте заменить в но-
шей программе строку добавления кнопки ЬЗ на разметку
следующим кодом:
g r i d L a y o u t - > a d d M u l t i C e l l W i d g e t ( Ь З , 2 , 2 , 0 , 1 ) ;
В качестве параметров указываются данный виджет, ко-
ординаты начальной и конечной строк, координоты началь-
ного и конечного столбцов.
Компилируем, запускаем — появляется окошко, как на
рис. 2
О
0
X Layout Exam ple No2
Q Q 0
f ~
First Button
[
Fifth Button
)
И ?
____________
___________________
' 4
( S e co n d Button j
£
Sixth Button
j і
________________________________ '
_________________________________ Щ
"
Я —
Third Button
1
(
Fourth Button"")
£ Seventh Button ")
Рис.2
Что бы нам еще эдакого сделать? Можно сделать так, что-
бы розмеры столбцов или строк находились в определенном
отношении, например, 2:3. Для этого добавим в конструктор
класса layout следующие строки:
g r i d L a y o u t - > s e t C o l S t r e t c h ( 0 , 2 ) ;
g r i d L a y o u t - > s e t C o l S t r e t c h ( l , 3 ) ;
Если откомпилировать программу, запустить и изменить
размеры ее окна, то можно ноблюдать токую картину —
рис. 3.
O I L .
- t —
First Button
3 c
Fifth Button
t — .
Second Button
(
Sixth Button
3
-------------------------
Third Button
Ы
Fourth Button
i
f
Seventh Button
fe Рис.З
ключать все тот же
q l a y o u t . h ,
а сам класс имеет следую-
щие перегружаемые конструкторы:
Q V B o x L a y o u t ( W i d g e t * p a r e n t , i n t m a r g in = 0 , i n t s p a c -
i n g = - 1 , c o n s t c h a r * n a m e = 0 )
Q V B o x L a y o u t ( Q L a y o u t * p a r e n t L a y o u t , i n t s p a c in g = - 1 ,
c o n s t c h a r * n a m e = 0 )
Q V B o x L a y o u t ( i n t s p a c i n g = - 1 , c o n s t c h a r * n a m e = 0 )
В первом конструкторе можно указать виджет, которым
будет руководить Loyout-менеджер, во втором — родитель-
скую «розметку», а третий нужно специально подключать ме-
тодом
a d d L a y o u t .
Видоизменим наш пример токим образом, чтобы объяв-
ления
Ы - Ь 7
остались прежними, а вместо кода
для
добав-
ления их в Layout напишем следующее:
Q V B o x L a y o u t » v b o x L a y o u t = n e w Q V B o x L a y o u t ( t h i s ,5,5);
v b o x L a y o u t - > a d d W id g e t ( Ы ) ;
v b o x L a y o u t - > a d d W id g e t ( b 2 ) ;
Q G r id L a y o u t * g r i d L a y o u t = n e w Q G r id L a y o u t (2,3 ,0,5);
g r i d L a y o u t - > a d d W i d g e t ( Ь З , 0 , 0 ) ;
g r i d L a y o u t - > a d d W i d g e t ( b 4 , 0 , 2 ) ;
g r i d L a y o u t - > s e t C o l S p a c i n g ( 1 , 1 5 ) ;
g r id L a y o u t - x a d d W i d g e t ( b 5 , 2 , 0 ) ;
g r i d L a y o u t - x a d d W i d g e t ( b 6 , 2 , 2 ) ;
v b o x L a y o u t - > a d d L a y o u t ( g r i d L a y o u t ) ;
v b o x L a y o u t - > a d d W id g e t ( b 7 ) ;
Вас может смутить функция-член
s e t C o l S p a c in g .
Объяс-
няю: она служит для создания «пустого» столбца. А зачем
нам пустой столбец, если он ничего не делает? А затем, что
для него можно выставить минимальную ширину в пикселях.
Таким образом, при любом изменении размеров окна ши-
рина столбца под номером 1
будет не менее 15 пикселей.
Аналогично роботоет метод
s e t R o w S p a c in g .
Все остальное должно быть понятно. Компилируем про-
грамму, запускаем и получаем вот такое окно — рис. 4.
C D S
X
La yo u t Exam ple N o
4
0
Q
0
(«-
F irst Button
S e c o n d Button
)
^ T h ir d Button )
£ F ou rth Button )
£ Fifth Button
)
£ S ix th B utton
)
( ~
S e v e n th Button
Hk Рис.4
Код можно несколько оптимизировоть:
Q V B o x L a y o u t » v b o x L a y o u t = n e w
Q V B o x L a y o u t ( t h i s ,5,5);
v b o x L a y o u t - > a d d W i d g e t ( b l ) ;
v b o x L a y o u t - > a d d W id g e t ( b 2 ) ;
Q G r id L a y o u t » g r i d L a y o u t = n e w
Q G r id L a y o u t ( v b o x L a y o u t , 2 , 3 , 5 ) ;
g r i d L a y o u t - > a d d W i d g e t ( Ь З , 0 , 0 ) ;
g r i d L a y o u t - > a d d W i d g e t ( b 4 , 0 , 2 ) ;
g r i d L a y o u t - > s e t C o l S p a c i n g ( 1 , 1 5 ) ;
g r i d L a y o u t - > a d d W i d g e t ( b 5 , 2 , 0 ) ;
g r i d L a y o u t - > a d d w i d g e t ( b 6 , 2 , 2 ) ;
v b o x L a y o u t - > a d d w i d g e t ( b 7 ) ;
Теперь поговорим о том, каким образом можно созда-
вать более сложные интерфейсы. Для этого используем «прин-
цип матрешки»: будем помещоть ІауоиЬменеджерьі друг в
друга. С этой целью нам придется познакомиться с новым
менеджером
О У В о х Д а у о и Щ
который упорядочивоет дочер-
ние виджеты по вертиколи. Для его использования нужно под-
Мы указали ^соа,аусл^ в качестве родительской «роз-
метки» для gridLayout и тем самым отказались от addLay-
оиь Результат будет анологичен предыдущему. Примеры к
прогромме можно выкачать по ссылке linuxmk.nm.ru/loyout.zip,
23 Кб.
(Продолжение следует)
предыдущая страница 41 Мой Компьютер 2005 12 читать онлайн следующая страница 43 Мой Компьютер 2005 12 читать онлайн Домой Выключить/включить текст