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



Download 5,27 Mb.
Pdf ko'rish
bet171/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   167   168   169   170   171   172   173   174   ...   193
Bog'liq
Book-qtC


Глава 14
Собственные классы в Qt. Создание
элементов графического интерфейса
14.1
Класс QObject
QObject
является базовым классом для почти всех классов Qt. Исключением
являются только классы, которые должны быть достаточно «лёгкими» (экзем-
пляры которых должны занимать как можно меньше памяти) и классы, объекты
которых должны копироваться (QObject не поддерживает копирования), а также
контейнерные классы. Все виджеты Qt наследуют QObject (класс QWidget явля-
ется потомком QObject). QObject реализует все базовые особенности, которыми
обладают классы Qt:
• мощный механизм взаимодействия между объектами с помощью
сигнально-слотовых соединений;
• иерархические взаимосвязи между объектами, позволяющие объединять их
в объектные деревья;
• управление памятью;
• «умные» указатели, позволяющие отслеживать уничтожение объекта;
• поддержка свойств;
• таймеры;
• обработка событий и фильтры событий;
• метаинформация о типе объекта, его свойства и т. п.
Каждый объект типа QObject обладает метаданными, которые хранятся внут-
ри специального метаобъекта. Этот метаобъект создаётся для каждого потомка
QObject
и сохраняет различную информацию об объекте (так называемые мета-
данные). Среди доступных для программиста метаданных есть:
• имя класса (метод const chat *Qobject::className());
• наследование (метод bool QObject::inherits(const char *className));
• информация о свойствах;


14.1. Класс QObject
375
• информация о сигналах и слотах;
• общая информация о классе (QОbject::classInfo).
Метаданные собираются во время компиляции (предварительной обработки про-
екта с помощью qmake) метаобъектным компилятором moc, который анализирует
содержание заголовочных файлов программы. Эти метаданные позволяют полу-
чить информацию о любом потомке QObject. Эта информация может быть по-
лезна как для отладки программы, так и для создания различных механизмов
взаимодействия между объектами в программе.
При разработке с использованием Qt часто возникает необходимость насле-
довать класс QObject непосредственно или его потомка. Объекты, которые на-
следуют QObject:
• имеют имя (QObject :: objectName ()), которое используется в Qt для
реализации различных возможностей (стили, QML и т.д.);
• могут занимать место в иерархии других объектов QObject;
• могут иметь сигнально-слотовые соединения с другими объектами QObject.
Рассмотрим создание собственного класса на примере создания виждета, ко-
торый можно будет многократно использовать в разных программах. Разрабо-
таем поле ввода с пиктограммой, которая может реагировать на действия поль-
зователя. Такая пиктограмма:
• может быть статически изображена в поле ввода (например, для обозначе-
ния обязательных полей в форме ввода данных пользователем);
• обозначать пустое поле или поле с введёнными данными (например, для
обозначения некорректно введённых данных);
• выполнять заранее заданное действие после нажатия (например, для от-
крытия диалога выбора файла для поля ввода пути к файлу).
Создадим новый проект и добавим к нему новый класс, который будет насле-
довать от QLineEdit (создание новых классов с использованием мастера описано
в разделе 13.1). Назовём новый класс IconizedLineEdit. После создания нового
класса откроем файл описания (IconizedLineEdit.h).
Для того, чтобы корректно наследовать класс от QObject необходимо выпол-
нить несколько условий:
• во-первых, QObject (или потомок QObject, от которого наследуют) должен
стоять первым в списке классов, от которых наследуют;
• во-вторых, перед объявлением интерфейса класса сразу после фигурной
скобки в частной секции размещают макрос Q_OBJECT.
Созданный класс выполняет эти условия (наследует от QLineEdit, который на-
следует от QWidget, а тот в свою очередь от QObject и содержит макрос Q_OBJECT
в частной секции класса).
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


376
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   167   168   169   170   171   172   173   174   ...   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