尝试使用信号将QTcpServer连接到GUI

时间:2013-05-10 13:21:18

标签: c++ qt qtcpserver

我在服务器和客户端之间建立了连接,连接在控制台中工作正常,但是我没有将我的QTcpServer类连接到带有信号和插槽的GUI。这是我的代码:

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;
}

1 个答案:

答案 0 :(得分:1)

您在连接方法中输错: IHM_connetion

QObject::connect(&server,SIGNAL(**IHM_connetion**())

发出的信号是:

 emit IHM_connection()

QObject:connect返回一个bool值,表示信号槽连接是否成功。检查此值(例如,使用Q_ASSERT)是一个很好的做法,如果出现这样的拼写错误,可以节省大量时间。 。