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

Posted

技术标签:

【中文标题】尝试使用信号将 QTcpServer 连接到 GUI【英文标题】:Trying to connect QTcpServer to GUI with signals 【发布时间】:2013-05-10 13:21:18 【问题描述】:

我在服务器和客户端之间创建了一个连接,该连接在控制台中工作正常,但我无法使用信号和插槽将我的 QTcpServer 类连接到 GUI。这是我的代码:

服务器TCP.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】:

您在连接方法中有错字:IHM_connetion

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

而发出的信号是:

 emit IHM_connection()

QObject:connect 返回一个布尔值,指示信号槽连接是否成功。检查此值(例如,使用 Q_ASSERT)是一种很好的做法,并且可以在出现此类拼写错误的情况下为您节省大量时间。 .

【讨论】:

以上是关于尝试使用信号将 QTcpServer 连接到 GUI的主要内容,如果未能解决你的问题,请参考以下文章

将 qml 信号连接到 Qt

Maya PySide:当我尝试将自定义信号连接到插槽时,Maya 崩溃

如何将信号连接到插槽

如何通过QTcpServer连接2台机器

无法将 Qml 信号连接到 C++ 插槽

QT:使用移动语义将信号连接到插槽