crossplatform.ru

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

> Как присоединить сигнал к функции, являющейся не членом какого либо объекта
niXman
  опции профиля:
сообщение 23.8.2008, 0:33
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 169
Регистрация: 18.6.2008
Пользователь №: 204

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




Репутация:   0  


Допустим. Некоторый объект испускает сигнал, который можно соединить со слотом другого объекта. Это стандартная ситуация.
А как быть если сигнал нужно соединить с функцией, не являющейся членом?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 23.8.2008, 7:25
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


см. использование Сигналов без Слотов
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 25.8.2008, 7:13
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 23.8.2008, 11:25) *

Кстати, можно сделать такой объект более универсальным:
class TmpSlot: QObject {
  Q_OBJECT
public:
  typedef void(*RealSlot)();
  TmpSlot(RealSlot realSlot, QWidget *parent = 0) :
    QObject(parent), realSlot(realSlot) {
    assert(realSlot);
  }

public slots:
    void doSlot() {realSlot();}
private:
  RealSlot realSlot;
};

Тогда использование становится таким:
int main(int argc, char *argv[]) {
  QPushButton *btnPath = new QPushButton("Open");
....
  TmpSlot tmp(&myfunk);
  QObject::connect(btnPath, SIGNAL(clicked()), &tmp, SLOT(doSlot()));
....
}


Сообщение отредактировал Tonal - 25.8.2008, 7:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 19.4.2024, 15:57