Russian Qt Forum

Qt => Общие вопросы => Тема начата: Andrew12 от Ноябрь 08, 2010, 14:36



Название: [РЕШЕНО] Вызов SLOT из дочернего класса - нет реакции
Отправлено: Andrew12 от Ноябрь 08, 2010, 14:36
Здравствуй многоуважаемый all,

Полный тупик в следующей ситуации. Есть программа
main.cpp
Код:
QMainWindow *mw;
classa2 var1;
var1.subcall(mw);

classa2.cpp
Код:
void classa2::subcall(QMainWindow *mw) {
classa3 var2;
var2.createtest(mw);
}

и наконец classa3.cpp
Код:
void classa3::temp() {
    qDebug() << "Example test";
}

void classa3::createtest(QMainWindow *mw) {
QPushButton *pbt2 = mw->findChild<QPushButton*>("pbtMenu");
QObject::connect(pbt2,SIGNAL(clicked()),this,SLOT(temp()));
}

Так вот: 1. Функция-слот temp() - рабочая
2. Сигнал-слот создается (об этом говорит pbt2->dumpObjectInfo();)
3. Ошибок нет, но реакция на нажатие кнопки отсутствует.

Если перенести вызов createtest из classa2 в main.cpp - все работает. Вопрос: это что же получается connect создается только из главного int main или у меня руки кривые?


Название: Re: Вызов SLOT из дочернего класса - нет реакции
Отправлено: Пантер от Ноябрь 08, 2010, 14:55
Как все запутано...
classa3 var2;
var2.createtest(mw);
var2 создан на стеке и при выходе из функции будет разрушен. Т.е. коннект никчему.


Название: Re: Вызов SLOT из дочернего класса - нет реакции
Отправлено: Andrew12 от Ноябрь 08, 2010, 17:50
Большое спасибо, многоуважаемый, Пантер. Дело стронулось с мертвой точки, процесс написсания пошел далее.