//该函数用于在收到文件名UDP消息时判断是否接收该文件 void Widget::hasPendingFile(QString usrname, QString srvaddr, QString clntaddr, QString filename) { QString ipAddr = getIP(); if (ipAddr == clntaddr) { int btn = QMessageBox::information(this, tr("接收文件"), tr("来自%1(%2)的文件:%3,是否接收?") .arg(usrname) .arg(srvaddr) .arg(filename), QMessageBox::Yes,QMessageBox::No); if (btn == QMessageBox::Yes) { QString name = QFileDialog::getSaveFileName(0, tr("保存文件"),filename); if(!name.isEmpty()) { Client *clnt = new Client(this); clnt->setFileName(name); clnt->setHostAddr(QHostAddress(srvaddr)); clnt->show(); }else{ sndMsg(Refuse, srvaddr); } } } }
时间: 2024-02-10 18:21:28 浏览: 70
QString的常用方法(小结)
5星 · 资源好评率100%
这是一段 C++ 代码,用于实现 Widget 类中的 hasPendingFile() 函数。该函数用于在收到文件名 UDP 消息时,判断是否接收该文件,并根据用户的选择进行相应的操作。
具体来说,该函数首先获取本机的 IP 地址,然后判断该消息的发送者 IP 是否与本机 IP 相同。如果相同,则弹出一个询问框,询问用户是否接收来自发送者的文件,并显示文件名、发送者 IP 和发送者用户名。如果用户选择接收,就弹出一个文件保存对话框,让用户选择保存文件的路径和文件名。如果用户选择保存,就创建一个 Client 类对象 clnt,设置文件名和发送者 IP 地址,并显示该对象。如果用户选择不保存,则向发送者发送一个 Refuse 类型的消息,表示拒绝接收文件。
需要注意的是,该函数中使用了 QFileDialog 类来实现文件保存对话框的功能,使用了 Client 类来实现文件接收功能。另外,该函数应该是在 Widget 类中的一个槽函数,当接收到文件名 UDP 消息时,会自动触发该函数的执行。
阅读全文