crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> connect - сделать вызов одноразовым, сигналы и слоты
AD
  опции профиля:
сообщение 8.10.2009, 9:45
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


connect(act, SIGNAL(triggered()), this, SLOT(prevEventAction()))

Вот есть такой connect. Как сделать так, чтобы этот вызов делался один раз? Ну то-есть необходимо определить, что уже соединение слота и сигнала совершено и вторично делать не следует! Но конечно же, чтобы была возможность, после отсоединения (disconnect) подсоединить еще раз!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
kwisp
  опции профиля:
сообщение 8.10.2009, 10:57
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


слушай такая бредовая идея.
е если завести объект класса
class Transmitter: public QObject {
Q_OBJECT
signals:
void transmite();
};

и соединить triggered() с transmite()
а
transmite с prevEventAction
то можно попробовать управлять вызовом prevEventAction с помощью blockSignals


blockSignals естественно объекта Transmitter
:)

Цитата(AD @ 8.10.2009, 11:43) *
Как именно это сделать?

если ты имеешь ввиду управление флагом.
то не сложно.
пусть в классе есть установленный изначально в флаг=0
в слоте проверяешь если 0, то выполняешь слот, если 1 то выходишь из слота, в конце слота устанавливаешь в 1.

перед первым выполнением флаг будет в 0, после первого в 1.
если надо чтоб следующий вызов слота сработал устанавливаешь флаг в 0.

ну естественно можно еще sender использовать чтоб знать что сработало соединение а не простой вызов слота как метода.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 8.10.2009, 11:02
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(kwisp @ 8.10.2009, 11:57) *
слушай такая бредовая идея.
... соединить triggered() с transmite()
а
transmite с prevEventAction
то можно попробовать управлять вызовом prevEventAction с помощью blockSignals


blockSignals естественно объекта Transmitter
:)

:blink: Не путай меня! :) По-моему, это "путь из Москвы в Париж через Нью-Йорк"! :)

Цитата(kwisp @ 8.10.2009, 11:57) *
если ты имеешь ввиду управление флагом.
то не сложно.
пусть в классе есть установленный изначально в флаг=0
в слоте проверяешь если 0, то выполняешь слот, если 1 то выходишь из слота, в конце слота устанавливаешь в 1.

перед первым выполнением флаг будет в 0, после первого в 1.
если надо чтоб следующий вызов слота сработал устанавливаешь флаг в 0.

ну естественно можно еще sender использовать чтоб знать что сработало соединение а не простой вызов слота как метода.

ммм. А примерчик можно? Непонятно значение этого флага, если в конце слота значение обнуляется. Что за sender()? Заранее спасибо.

Сообщение отредактировал AD - 8.10.2009, 11:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 9:49