невозможно привязать сигнал к слоту в QT - PullRequest
0 голосов
/ 05 января 2010

Я только начал с QT и знаю концепцию сигнал / слот, но при ее реализации у меня возникли проблемы. взгляните на мой код:

#include "test.h"
#include <QCoreApplication>
test::test()
{
    // TODO Auto-generated constructor stub

}

test::~test()
{
    // TODO Auto-generated destructor stub
}



void test::fireslot(){

    qDebug("the slot fired");

}

void test::dosignaling(){
    QObject::connect(this,SIGNAL(callslot()),this,SLOT(fireslot()));

}

примечание: я добавил макрос Q_OBJECT и наследую от QObject в test.h

и вот мой тестовый контейнер

#include "test.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    //test t1();
    test *t2 = new test();


    t2->dosignaling();


    return a.exec();
}

код компилируется идеально, но ничего не случится. Я не совсем уверен, какую часть я сделал ошибку: -?

1 Ответ

5 голосов
/ 05 января 2010

Код, который вы используете в void test::dosignaling, соединяет слот «fireslot» с сигналом «calllot», но где вы испускаете сигнал callslot?

Вы должны изменить свой код и поместить свой QObject::connect() в конструктор (или в другое место) и изменить свой метод dosignaling на:

void test::dosignaling()
{
    emit callslot();
}

Кроме того, вы не показали заголовочный файл, но он должен включать в себя объявление о сигнальном интервале, например:

class test
{
    ...
signals:
    void callslot();
};
...