尝试使用信号将 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的主要内容,如果未能解决你的问题,请参考以下文章