Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Как присоединить сигнал к функции

Автор: niXman 23.8.2008, 0:33

Допустим. Некоторый объект испускает сигнал, который можно соединить со слотом другого объекта. Это стандартная ситуация.
А как быть если сигнал нужно соединить с функцией, не являющейся членом?

Автор: Litkevich Yuriy 23.8.2008, 7:25

см. http://www.forum.crossplatform.ru/index.php?showtopic=367

Автор: niXman 23.8.2008, 10:52

Litkevich Yuriy, Ну это понятно. Меня такое не устраивает.

Автор: Tonal 25.8.2008, 7:13

Цитата(Litkevich Yuriy @ 23.8.2008, 11:25) *
см. http://www.forum.crossplatform.ru/index.php?showtopic=367

Кстати, можно сделать такой объект более универсальным:
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()));
....
}

Автор: niXman 25.8.2008, 21:42

Tonal, Ага! Спасибо!

Автор: Tonal 26.8.2008, 6:54

Там кнопочка для спасибы есть. :)

Автор: niXman 27.8.2008, 23:56

Tonal, Зделал :p

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)