Я создал соединение между сервером и клиентом, оно отлично работает в консоли, но я не смог подключить свой класс QTcpServer к графическому интерфейсу с сигналами и слотами. Вот мой код:
ServerTCP.cpp
ServerTcp :: ServerTcp (QWidget *parent)
{
listen(QHostAddress::Any,4000);
QObject:: connect(this, SIGNAL(newConnection()),
this, SLOT(connectionRequest()));
}
void ServerTcp :: connectionRequest()
{
emit IHM_connection();
clientConnection = nextPendingConnection();
QObject:: connect(clientConnection, SIGNAL(readyRead()),
this, SLOT(read()));
}
void ServerTcp::read()
{
QString ligne;
while(clientConnection->canReadLine())
{
ligne = clientConnection->readLine();
emit IHM_text(ligne);
}
QTextStream text(clientConnection);}
ManinWindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QObject::connect(&server,SIGNAL(IHM_connetion()),this,SLOT(connectionRequested()));
QObject::connect(&server,SIGNAL(read(QString)),this,SLOT(print_text(QString)));
}void MainWindow::on_quitButton_clicked()
{
qApp->quit();
}
void MainWindow::print_text(QString text){
ui->log->append("message : " + text);
}
void MainWindow::connectionRequested(){
ui->log->append("connection OK!");
}
MainWindow::~MainWindow()
{
delete ui;
}
У вас есть опечатка в методе подключения: IHM_connetion
QObject::connect(&server,SIGNAL(**IHM_connetion**())
в то время как излучаемый сигнал:
emit IHM_connection()
QObject: connect возвращает значение bool, которое указывает, было ли соединение с сигнальным слотом успешным. Проверка этого значения (например, с помощью Q_ASSERT) является хорошей практикой и может сэкономить много времени в случае подобных опечаток. ,
Других решений пока нет …