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



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


Глава 13. Создание графического интерфейса средствами Qt
c o n n e c t ( pushButton_9 , SIGNAL( c l i c k e d ( ) ) , mMapper , SLOT(map ( ) ) , Qt : :
UniqueConnection ) ;
c o n n e c t ( pushButton_10 , SIGNAL( c l i c k e d ( ) ) , mMapper , SLOT(map ( ) ) , Qt : :
UniqueConnection ) ;
mMapper−>setMapping ( pushButton , 1 ) ;
mMapper−>setMapping ( pushButton_2 , 2 ) ;
mMapper−>setMapping ( pushButton_3 , 3 ) ;
mMapper−>setMapping ( pushButton_4 , 4 ) ;
mMapper−>setMapping ( pushButton_5 , 5 ) ;
mMapper−>setMapping ( pushButton_6 , 6 ) ;
mMapper−>setMapping ( pushButton_7 , 7 ) ;
mMapper−>setMapping ( pushButton_8 , 8 ) ;
mMapper−>setMapping ( pushButton_9 , 9 ) ;
mMapper−>setMapping ( pushButton_10 , 0 ) ;
s l o t C l e a r ( ) ;
После этого соединим QSignalMapper сигнально-слотовым соединением с на-
шим слотом для обработки нажатий цифровых кнопок:
c o n n e c t ( mMapper , SIGNAL( mapped ( i n t ) ) , this , SLOT( s l o t B u t t o n P r e s s e d ( i n t ) ) , Qt : :
UniqueConnection ) ;
Теперь программа-калькулятор готова к работе.
Заметим, что для создания соединения обычно используют метод connect(),
но существует способ установить соединение автоматически. Обычно такие со-
единения можно использовать в случае, когда необходимо соединить элементы
на форме созданной как Ui-файл с программным кодом, реализующий обработку
действий пользователя. Автоматическое соединение задают следующим образом:
on_<имя объекта>_<имя сигнала> (параметры)
Соединение
происходит
с
помощью
вызова
статического
метода
QMetaObject:: connectSlotsByName
.
Несмотря на относительную простоту этот метод не всегда является удоб-
ным (учитывая некоторую неочевидность, а также способ именования слотов —
особенно когда это касается многократного их использования).
Подытожим наши знания о сигналах, слотах и сигнально-слотовых соедине-
ниях:
Слоты:
• слот реализуют как обычный метод класса;
• определяют в одной из секций для слотов (private slots, protected
slots
, public slots);
• слот может возвращать значение, но это нельзя каким-либо образом ис-
пользовать в сигнально-слотовом соединении;
• произвольное количество сигналов может быть присоединено к одному сло-
ту;
• слот можно вызвать, как обычный метод класса.
Сигналы:
• определяют в секции для сигналов (signals);
• сигналы всегда возвращают void;
• сигнал должен быть без реализации (реализацию для сигнала предостав-
ляет метаобьектный компилятор moc);
• сигнал может быть присоединён к произвольному количеству слотов;
Программирование на языке С++ в среде Qt Creator


13.6. Элементы графического интерфейса.
371
• обычно эмитирование (выпускание) сигнала приводит к прямому вызову
слота, но вызов может также быть косвенным (зависит от типа соединения);
• слоты при этом могут вызываться в произвольном порядке;
• для посылки сигнала достаточно простого вызова (как в случае с метода-
ми), но предпочтительно использовать перед вызовом макрос emit (исполь-
зуется для различия вызова метода и эмитирования сигнала, но фактически
не выполняет никакой специальной роли).
13.6
Элементы графического интерфейса и их
использование.
Все виджеты в Qt наследуют от класса QWidget. Класс QWidget предоставляет
базовую функциональность общую для всех виджетов. Среди свойств, которые
наследуют от QWidget, — свойство enabled, которое позволяет разрешить или
запретить взаимодействие пользователя с элементом управления (методы void
setEnabled(bool)
и bool isEnabled()). Когда свойство установлено (логиче-
ское значение false) — визуальный элемент деактивирован и пользователь боль-
ше не может с ним взаимодействовать. Обычно такие деактивированные элемен-
ты изменяют внешний вид, чтобы пользователь смог их отличить от активных.
Свойство visible (методы void setVisible(bool) и bool isVisible()) опре-
деляет видимый виджет (значение true) или нет (значение false). Эти свойства
влияют не только на сам визуальный элемент, но и на дочерние элементы.
Кроме этих общих свойств, каждый виджет обладает собственными уникаль-
ными особенностями, которые позволяют создавать удобные и практичные в ис-
пользовании пользовательские интерфейсы.
Так, например, кнопки (Buttons), очень часто употребляемый элемент
управления. В общем поведение для кнопок определяет абстрактный класс
QAbstractButton
. Эти элементы могут находиться в включённом или вы-
ключенном состояниях. Состояние можно определять с помощью свойства
checked
(метод isChecked()). Переключением можно управлять с помо-
щью свойства checkable (bool isCheckable(), setChеcked(bool)). От класса
QAbstractButton
наследуют классы QCheckBox, QPushButton, QRadioButton,
QToolButton
.
QPushButton
чаще используют соединяя его сигнал clicked(), который вызы-
вается при нажатии кнопки, с другими слотами.
QToolButton
является кнопкой для быстрого доступа к действиям или настрой-
кам, которую обычно используют внутри панели инструментов.
QCheckBox
— элемент-флажок. Может находиться в включённом или выключен-
ном состоянии. Также может иметь третье промежуточное состояние, под-
держку которого можно активировать с помощью метода setTristate().
QRadioButton
— кнопка-переключатель. Как и флажок может находиться в
включённом или выключенном состоянии. Её используют в группе с други-
ми переключателями (см. класс QButtonGroup) для обозначения нескольких
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


372
Download 5,27 Mb.

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