Alt linux Программирование на языке С++ в среде Qt Creator Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк, О. В. Чеснокова, А. С. Чмыхало Москва alt linux 2015



Download 5,27 Mb.
Pdf ko'rish
bet163/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   159   160   161   162   163   164   165   166   ...   193
Bog'liq
Book-qtC


Глава 13. Создание графического интерфейса средствами Qt
l L a b e l −>s e t T e x t ( " T e x t L a b e l " ) ;
//Текст на метке.
//Создаём кнопку, задаём «родителя», геометрию и текст
QPushButton ∗ lPushButton = new QPushButton ( t h i s ) ;
lPushButton−>setGeometry ( 5 0 , 5 0 , 1 0 0 , 3 0 ) ;
lPushButton−>s e t T e x t ( " P u s h B u t t o n " ) ;
//Создаём поле ввода, задаём «родителя», геометрию и текст
QLineEdit ∗ l L i n e E d i t = new QLineEdit ( t h i s ) ;
l L i n e E d i t −>setGeometry ( 5 0 , 1 0 0 , 1 0 0 , 3 0 ) ;
l L i n e E d i t −>s e t T e x t ( " L i n e E d i t " ) ;
l L i n e E d i t −>s e l e c t A l l ( ) ; //Выделяем текст в поле ввода (просто для примера)
//Наконец изменяем размер родительского виджета
setGeometry ( x ( ) , y ( ) , 3 0 0 , 1 5 0 ) ;
//и задаём текст заголовка окна
s e t W i n d o w T i t l e ( " P a r e n t W i d g e t E x a m p l e " ) ;
}
Поскольку родительским элементом является ParentWidget, то метка
(QLabel), кнопка (QPushButton) и текстовое поле (QLineEdit) находятся в его
пределах. Позицию дочерних виджетов задают относительно левого верхнего
угла отца. В этом легко убедиться изменив размеры и позицию окна нашей про-
граммы. Обратите внимание на то, как мы создавали элементы пользователь-
ского интерфейса в динамической памяти используя оператор new. Это гаран-
тирует, что элементы не будут удалены после завершения работы конструктора
ParentWidget
.
Далее добавим в проект файл main.cpp. Наш класс наследует от класса
QWidget
— базового класса для всех визуальных элементов пользовательского
интерфейса, а следовательно будет обладать всеми его особенностями. Созда-
дим экземпляр нашего класса и вызовем метод show() для того, чтобы показать
его (см. рис. 13.3).
#include 
//Подключаем .h файл с определением нашего класса ParentWidget
#include " p a r e n t w i d g e t . h "
i n t main ( i n t l A r g c , char ∗ lArgv [ ] )
{
Q A p p l i c a t i o n l A p p l i c a t i o n ( l A r g c , l A r g v ) ;
//Создаём и показываем окно программы
ParentWidget l P a r e n t W i d g e t ;
//Переместить окно в точку экрана с координатами 100, 200
l P a r e n t W i d g e t . move ( 1 0 0 , 2 0 0 ) ;
l P a r e n t W i d g e t . show ( ) ;
return l A p p l i c a t i o n . e x e c ( ) ;
}
Рис. 13.3: Пример создания дочерних виджетов
Программирование на языке С++ в среде Qt Creator


13.2. Компоновка (Layouts)
359
13.2
Компоновка (Layouts)
Для того, чтобы оптимально разместить виджеты на форме, необходимо
учесть ряд деталей:
• размер соседних виджетов;
• визуальные компоненты могут динамически изменять размер, исчезать или
появляться в следствии работы логики программы;
• форма, в которой размещают виджеты, может динамически изменять раз-
мер при работе программы (когда пользователь меняет размер окна либо
раскрывает его на весь экран);
• часто нужно растянуть визуальную компоненту таким образом, чтобы она
занимала всё пространство формы, или же чтобы несколько компонент за-
нимали пространство формы пропорционально (в соответствующих про-
порциях 1:1, 1:2, 3:5 и т.д.);
• часто нужно разместить виджеты либо группы виджетов вертикально либо
горизонтально на форме.
Понятно, что такая логика является довольно сложной для реализации при
создании пользовательских интерфейсов разной структуры. К счастью в арсе-
нале Qt есть довольно мощный инструмент для упорядочивания виджетов на
форме — компоновщик.
Компоновщик позволяет упорядочить размещение компонент, оставляя ин-
терфейс гибким для внесения изменений, таких как изменение размера либо
количества элементов на форме. Компоновщик также может обеспечивать адек-
ватное изменение размера самого виджета в ответ на перемены в его наполнении.
Компоновщик не принадлежит к виджетам, не наследует от QWidget и явля-
ется невидимым на форме. Он только управляет её размером и размещением её
содержания.
Обычно используют три основных класса компоновщика:
• вертикальная компоновка (класс QVBoxLayout);
• горизонтальная компоновка (класс QHBoxLayout);
• компоновка сеткой (класс QGridLayout);
Для того, чтобы продемонстрировать работу с компоновками, используем преды-
дущий пример добавив ещё несколько элементов и сделав так, чтобы размещение
элементов было пропорциональным и соответствовало изменениям размеров ок-
на. Попытаемся создать такой интерфейс:
• метки и поля ввода разместим горизонтально в одной строке;
• создадим три такие строки с метками и полями;
• добавим ещё одну строку с двумя кнопками горизонтально и правым вы-
равниванием.
Создадим проект LayoutExample. Для этого воспользуемся мастером новых
проектов. Выберем в списке Qt Widgets Application. Зададим название для
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


360
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   159   160   161   162   163   164   165   166   ...   193




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish