Редактирование: Сигналы и слоты (Qt)

Материал из Wiki.crossplatform.ru

Перейти к: навигация, поиск
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 11: Строка 11:
* указатель на объект-получатель
* указатель на объект-получатель
* слот объекта-получателя
* слот объекта-получателя
-
* тип соединения
 
-
При соединении сигналов и слотов можно передавать параметры от сигнала к слоту, если существует сответствующая пара сигнал/слот.
+
При соединении сигнало в и слотов можно передавать параметры от сигнала к слоту, если существует сответствующая пара сигнал/слот.
=== Без параметров ===
=== Без параметров ===
-
<source lang=cpp-qt>
+
{{code|qt|code=
-
QPushButton *btn_quit = new QPushButton("Quit",wgt);
+
QPushButton btn_quit = new QPushButton("Quit",wgt);
...
...
QObject::connect(btn_quit, SIGNAL(clicked()), qApp, SLOT(quit()));
QObject::connect(btn_quit, SIGNAL(clicked()), qApp, SLOT(quit()));
-
</source>
+
}}
В этом примере сигнал [[Qt:Документация_4.3.2/qabstractbutton#clicked|clicked()]] от кнопки '''btn_quit''' соеденяется со слотом [[Qt:Документация_4.3.2/qcoreapplication#quit|quit()]] приложения (qApp - глобальный указатель на экземпляр приложения)
В этом примере сигнал [[Qt:Документация_4.3.2/qabstractbutton#clicked|clicked()]] от кнопки '''btn_quit''' соеденяется со слотом [[Qt:Документация_4.3.2/qcoreapplication#quit|quit()]] приложения (qApp - глобальный указатель на экземпляр приложения)
Строка 26: Строка 25:
При соединении  сигналов и слотов с передачей параметров следует помнить замечание указанное в описании к [[Qt:Документация_4.3.2/qobject#connect|QObject::connect()]]. Т.е. имена аргументов должны быть опущены.  
При соединении  сигналов и слотов с передачей параметров следует помнить замечание указанное в описании к [[Qt:Документация_4.3.2/qobject#connect|QObject::connect()]]. Т.е. имена аргументов должны быть опущены.  
-
[[Изображение:Attention niels epting.svg|18px]] Неправильно:
+
Неправильно:
-
<source lang=cpp-qt>
+
{{code|qt|code=
QObject::connect(scrollBar, SIGNAL(valueChanged(int value)), label, SLOT(setNum(int value)));
QObject::connect(scrollBar, SIGNAL(valueChanged(int value)), label, SLOT(setNum(int value)));
-
</source>
+
}}
Правильно:
Правильно:
-
<source lang=cpp-qt>
+
{{code|qt|code=
QObject::connect(scrollBar, SIGNAL(valueChanged(int)), label, SLOT(setNum(int)));
QObject::connect(scrollBar, SIGNAL(valueChanged(int)), label, SLOT(setNum(int)));
-
</source>
+
}}
-
В этом примере сигнал [[Qt:Документация_4.3.2/qabstractslider#valueChanged|valueChanged()]] от линейки прокрутки '''scrollBar''' соеденяется со слотом [[Qt:Документация_4.3.2/qlabel#setNum-2|setNum()]] текстовой метки '''label'''. Сигнал передает параметр типа ''int'' - текущая позиция ползунка. Слот метки имеет такой же тип входного аргумента (сигнатуры сигнала и слота должны всегда совпадать). После соединения этой пары сигнал/слот, при изменении положения ползунка, в текстовой метке будет отбражатся текущая позиция ползунка.
+
В этом примере сигнал [[Qt:Документация_4.3.2/qabstractslider#valueChanged|valueChanged()]] от линейки прокрутки '''scrollBar''' соеденяется со слотом [[Qt:Документация_4.3.2/qlabel#setNum-2|setNum()]] текстовой метки '''label'''. Сигнал передает параметр типа ''int'' - текущая позиция ползунка. Слот метки имеет такой же тип входного аргумента. После соединения этой пары сигнал/слот. При изменении положения ползунка в текстовой метке будет отбражатся текущая позиция ползунка.
-
 
+
-
=== С типом соединения ===
+
-
Тип соединения используется при работе с сигналами и слотами для указания как нужно доставлять сигнал слоту: немедленно или ставится в очередь, блокировать поток в котором он выполняется или нет.
+
-
 
+
-
Типы соединения и их описание вы можете посмотреть в перечислении [[Qt:Документация 4.3.2/qt#ConnectionType-enum | Qt::ConnectionType]].
+
== Объявление собственных сигналов и слотов ==
== Объявление собственных сигналов и слотов ==
-
 
-
 
-
[[Категория:Qt FAQ]]
 

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Wiki.crossplatform.ru:Авторское право). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!