Russian Qt Forum

Qt => Вопросы новичков => Тема начата: megido от Февраль 09, 2014, 19:00



Название: как вызвать функцию или сигнал послать из другого класса?
Отправлено: megido от Февраль 09, 2014, 19:00
Код:
на данный момент  у меня так

Class1::Class1(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Class1)
{

    w=new Web();
    connect(w, SIGNAL(test_message()), this, SLOT(showMessage()) );

}

public slots:
    void showMessage();

***********************************

класс Web имеет сигнал test_message()

и там же в нем при его создании(на данный момент) пробую эмитить сигнал test_message()




собсно ничего не происходит. даже если я эмитирую сигнал в первом классе







Название: Re: как вызвать функцию или сигнал послать из другого класса?
Отправлено: gil9red от Февраль 09, 2014, 19:16
Для вызова сигнала нужно использовать emit <сигнал>;
Код
C++ (Qt)
emit test_message();

А этого я у вас не увидел :)


Название: Re: как вызвать функцию или сигнал послать из другого класса?
Отправлено: carrygun от Февраль 10, 2014, 04:26
Дергать сигнал в конструкторе - плохая идея, сделайте для этого специальную функцию/слот.


Название: Re: как вызвать функцию или сигнал послать из другого класса?
Отправлено: LisandreL от Февраль 10, 2014, 07:12
и там же в нем при его создании(на данный момент) пробую эмитить сигнал test_message()
собсно ничего не происходит. даже если я эмитирую сигнал в первом классе
А что по вашему мнению должно прозойти?
Если вы эмитите сигнал внутри конструктура, а коннект вызываете после него, то тот сигнал ничего вызвать и не должен, так как на момент эмита коннекта ещё нет.