Сигнальный слот не работает

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

Это мой Listener.hpp:

class Listener : public QObject
{
Q_OBJECT

public:
//explicit Listener(QObject *parent = 0);
explicit Listener();
void listen();
void stopListen();
bool isListening();

public slots:
void on_newConnection();
void on_readyRead();
void on_disconnected();

signals:
void readyToReadFromServer();

private:
QTcpServer* m_server;
QTcpSocket* m_socket;

};

Это мой Listener.cpp:

Listener::Listener()
{
m_server = new QTcpServer(this);
connect(m_server, SIGNAL(newConnection()), this, SLOT(on_newConnection()));
}

void Listener::listen()
{

string strPort = ConfigManager::instance().get("Channel.Port");
QString qstrPort(strPort.c_str());
qint16 port = qstrPort.toUInt();

m_server->listen(QHostAddress::Any, port);

//QCoreApplication::instance()->exec();

}
void Listener::stopListen()
{
m_server->close();
}
bool Listener::isListening()
{
return m_server->isListening();
}
void Listener::on_newConnection()
{
m_socket = m_server->nextPendingConnection();

if(m_socket->state() == QTcpSocket::ConnectedState)
{
printf("New connection established.\n");
}

connect(m_socket, SIGNAL(readyRead()), this, SLOT(on_readyRead()));
connect(m_socket, SIGNAL(disconnected()), this, SLOT(on_disconnected()));
}

void Listener::on_readyRead()
{
emit readyToReadFromServer();
}

void Listener::on_disconnected()
{
//...
}

Я использую Controller класс для подключения всех сигналов — слоты в моем приложении и несколько других вещей.

Вкратце, это мой Controller.hpp (в этом классе много методов, сигнальных слотов, и они не имеют отношения к этой проблеме, поэтому я их не упомянул):

class  Controller : public QObject
{
Q_OBJECT

public slots:
void waitForCommands();
...
signals:
void greeting_send();
...
private:
Listener m_listener;
}

Я подключаю все сигнальные слоты следующим способом:

bool Controller::init()
{
...
this->connect(&m_listener, SIGNAL(readyToReadFromServer()), SLOT(waitForCommands()));
...
}

Также есть waitForCommands() метод в этом классе:

void Controller::waitForCommands()
{
...
}

Я подключил все слоты и сигналы моего проекта, вот так, и все они работают, но не этот. Как это исправить?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]