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



Download 5,27 Mb.
Pdf ko'rish
bet178/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   174   175   176   177   178   179   180   181   ...   193
Bog'liq
Book-qtC


Глава 14. Создание элементов графического интерфейса
• события направляются на обработку объектам, участвующим в работе про-
граммы. За сбор и перенаправление событий к обработчикам ответствен-
ным является цикл обработки событий в программе;
• каждое событие существует в виде объекта типа QEvent. Для большинства
событий существуют специализированные классы этих событий, унаследо-
ванные от QEvent, которые содержат информацию о событии и данные необ-
ходимые для её корректной обработки;
• для участия в обработке событий объект должен быть унаследован от клас-
са QObject. События, которые поступают к объекту на обработку, автома-
тически передаются к виртуальному методу QObject::event();
• для удобства, для большинства событий существуют отдельные вирту-
альные методы обработки, которые вызываются виртуальным методом
QObject::event();
• объекты имеют возможность быть фильтрами событий для других объек-
тов в приложении. Для того, чтобы установить объект в качестве филь-
тра событий, пользуются методом installEventFilter(). Объект-фильтр
должен переопределить виртуальный метод QObject::eventFilter(), ко-
торый возвращает логическое значение, было событие отфильтровано (то
есть, оно не будет направляться на обработку) или нет.
А вот общий алгоритм для программной обработки событий:
• в случае, когда нет возможности унаследовать класс объекта и переопреде-
лить методы обработки, а также в случае, когда необходимо фильтровать,
блокировать или предварительно обработать событие перед тем, как она
будет отправлена на обработку к объекту — воспользуйтесь фильтром со-
бытий

переопределите виртуальный метод QObject::eventFilter() для объ-
екта, который будет выступать в роли фильтра событий;

в методе eventFilter() проверьте объект к которому на обработку
будет направляться событие;

дальше, определите тип события (QEvent::Type) и класс события, про-
верьте является ли полученное событие событием нужного вам типа;

приведите объект события до нужного вам класса событий;

выполните предварительную обработку события, если необходимо.
Для того, чтобы отфильтровать событие (после этого оно не будет пе-
редаваться объекту на обработку) верните из метода логическое зна-
чение true. Для того, чтобы отправить событие на обработку объекту-
адресату верните логическое значение false.
• для некоторых типов событий, которые не имеют отдельного метода-
обработчика, обработку можно запрограммировать, переопределив метод
QObject::event()

переопределите виртуальный метод для объекта QObject::event(),
который должен выполнять обработку;

определите тип события (QEvent::Type) и класс события, проверьте
является ли полученное событие событием нужного вам типа;
Программирование на языке С++ в среде Qt Creator


14.5. Создание собственного элемента интерфейса
389

приведите объект события до нужного вам класса событий;

выполните обработку или вызовите метод, который её выполнит, вер-
ните значение true, которое означает, что событие распознано и обра-
ботано, или false в случае, если объект не будет выполнять обработку.
В этом случае событие может быть переслано на обработку родитель-
скому объекту.

вызовите метод event() для базового класса, чтобы провести обработ-
ку всех остальных видов событий. Верните из метода значение, которое
вернёт метод event() базового класса после выполнения.
• если объект имеет виртуальный метод-обработчик события, используйте
его

переопределите виртуальный метод для объекта QObject::event(),
который должен выполнять обработку;

выполните обработку события. Вызовите метод accept() для события,
если во время обработки убедились, что событие должно быть прора-
ботано данным объектом. В противном случае, вызовите ignore() для
объекта события (в этом случае событие может быть направлено к ро-
дительскому объекту на обработку).
14.5
Создание собственного элемента интерфейса.
Создание свойств
QObject
предоставляет механизм для объявления свойств. Свойства — это
специальные общедоступные поля, через которые можно получить доступ к дан-
ным объекта. Свойства обычно имеют методы для установки и получения значе-
ния, вызываемые при чтении из свойства и записи данных. В Qt свойства выпол-
няют специальную роль, ведь делают доступными для метаобъектной системы
способы чтения и записи данных объектов, что часто используется в Qt для
реализации различных механизмов (анимации, описание динамических пользо-
вательских интерфейсов в QtQuick, и т. д.).
Определение свойства обычно состоит из макроса Q_PROPERTY, который опи-
сывает свойство и содержит описания:
• метода для установки начального значения;
• метода для получения значения;
• метода для установки значения;
• сигнала об изменении значения свойства;
• дополнительных настроек.
Метод для установки значения принимает одно значение (того же типа, что
и свойство) и возвращает void. Метод для получения значения возвращает зна-
чение свойства.
Обычно метод для получения значения называют так же как и свойство, а
метод для установки значения ещё и имеет префикс «set». Метод для получе-
ния значения, который возвращает тип bool также обычно имеет префикс «is»,
например:
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


390
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   174   175   176   177   178   179   180   181   ...   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