QT5.3无法自动调用incomingConnection函数的问题
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:30
最近将qt4.7的一个工程移到5.3,遇到了几个麻烦事,主要是这个incomingConnection监听后无法自动调用的问题,在4.7上是完全没有问题的,到了5.3就不行,网上也查了下,网友们都是放出问题,然而都没有写出解决。
1.一步解决
我之前是这样写的:
void TFTPxServer::incomingConnection(int socketDescriptor)
{
qDebug() << "incomingConnection..."; TFTPxThread *thread = new TFTPxThread(socketDescriptor);
//deleteLater会释放线程
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); thread->start();
} int TFTPxServer::startListen()//通过调用这个函数达到自动进入incomingConnection开启新线程,然而在QT5.3这并没有什么卵用。
{
if(!this->listen(QHostAddress::Any, TFTPX_PORT))
{
m_strErrMsg = QString("TFTPxServer Listen Fail.");
return T_SOCKET_LISTEN_FAIL;
} qDebug() << "listen success."; return T_SUCCESS;
}
后来我尝试了下不用内部函数去监听,而是用TFTPxServer的对象直接监听,把上面的startListen()干掉,外部直接这样就可以了:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this); serverInit();
}
int MainWindow::serverInit()
{
m_server = new TFTPxServer(this); if(!m_server->listen(QHostAddress::Any, TFTPX_PORT))
{
ui->TextBrowseServerStatus->append("后台服务器已启动,监听失败!!!");
return T_SOCKET_LISTEN_FAIL;
}
return T_SUCCESS;
}
大家也可以参考自带的demo:C:\Qt\Qt5.3.2\Examples\Qt-5.3\network\threadedfortuneserver可以查看下
- 上一篇: Qt5.9 UI设计(一)——在win10系统上安装Qt5.9
- 下一篇: QT5.1 调用https
相关文章
-
Qt5.9 UI设计(一)——在win10系统上安装Qt5.9
Qt5.9 UI设计(一)——在win10系统上安装Qt5.9
- 互联网
- 2026年04月04日
-
Qt5配置winpCap
Qt5配置winpCap
- 互联网
- 2026年04月04日
-
qt5无法调用cout
qt5无法调用cout
- 互联网
- 2026年04月04日
-
QT5.1 调用https
QT5.1 调用https
- 互联网
- 2026年04月04日
-
qt5 配置 anaconda
qt5 配置 anaconda
- 互联网
- 2026年04月04日
-
QT+信号有参数与无参数的实现+QT4和QT5在信号和槽使用上的区别
QT+信号有参数与无参数的实现+QT4和QT5在信号和槽使用上的区别
- 互联网
- 2026年04月04日






