Qt开发常见问题解决方法

1、Qt程序在开发环境启动时出现"启动程序失败,路径或者权限错误"?

答:是不是被杀毒软件杀了,关键它还没有任何提示。打开360安全卫士,点击如下界面红色区域。

点击上图的已隔离14项,弹出如下图所示。

找到被隔离的程序点击“恢复”探测如下界面:并选择红色方框,保证程序恢复到原来的位置,并不在被隔离,这样程序就可以正常运行了。

2.Linux环境下Qt程序接收不到组播发来的数据?

1)问题情况1

利用Wireshark工具可以查看到发送过来数据,但是本机程序收不到数据,经排查本机设备没有设置网关地址,通过设置网关地址192.168.0.1,Qt程序可以接收到数据

2)问题情况2

因为安装Linux的机器上安装有多个Qt程序,需要共享网卡地址,所以设置属性为共享地址QUdpSocket::ShareAddress,切允许多个程序使用需设置属性QUdpSocket::ReuseAddressHint

3)绑定函数说明

QUdpSocket 是 Qt 框架中用于处理 UDP 网络通信的类。bind 函数是此类中的一个重要方法,它用于将 QUdpSocket 对象绑定到一个特定的端口上,以便在该端口上接收 UDP 数据包

在 Qt 中,bind 函数的原型通常如下所示:

bool QUdpSocket::bind(const QHostAddress &address, quint16 port, BindMode mode = DefaultForPlatform)

参数解释
quint16 port: 要绑定的端口号。
const QHostAddress &address: 要绑定的 IP 地址。如果省略,则默认绑定到所有可用的网络接口(即 0.0.0.0 或 ::,取决于协议族)。
BindMode mode: 绑定模式,可以是 QUdpSocket::ShareAddress、QUdpSocket::DontShareAddress、QUdpSocket::ReuseAddressHint 或 QUdpSocket::DefaultForPlatform(默认)。这个参数影响套接字如何与其他可能正在使用相同地址和端口的套接字共享或独占资源。
返回值:如果绑定成功,函数返回 true;否则返回 false。