【发布时间】:2019-07-22 09:11:23
【问题描述】:
我想在代理服务器后面使用 QMediaPlayer 在 QT5 上播放 webradio 流。
我尝试使用以下解决方案:
How to make a proxy working with QMediaPlayer in Qt5?
但是 QNetworkReply 不是从 QIODevice 派生的,因此它不会编译。
我已阅读文档,搜索了很多但没有找到解决方案。
编辑:添加一个最小的可重现示例:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkProxy proxy;
manager->setProxy(proxy);
QNetworkReply *reply = manager -> get(QNetworkRequest( QUrl()));
QMediaPlayer *player = new QMediaPlayer();
player->setMedia(QMediaContent(), reply);
编译器说:
参数 2 从“QNetworkReply*”到未知的转换 ‘QIODevice*’
编辑:
在我发现的 QNetworkReply 的 QT 资源中:
class QNetworkReplyPrivate;
class Q_NETWORK_EXPORT QNetworkReply: public QIODevice
但是为什么向上转换到 QIODevice 不起作用?如果我尝试进行强制转换,编译器会说:
错误:不能将“reply”(类型为“class QNetworkReply*”)动态转换为 type ‘class QIODevice*’ (source 是一个指向不完整类型的指针)
【问题讨论】:
-
QNetworkReply 确实继承自 QIODevice。
-
编译器说“没有已知的参数 2 从 'QNetworkReply*' 到 'QIODevice*' 的转换”并参考:void setMedia(const QMediaContent &media, QIODevice *stream = Q_NULLPTR);
-
对不起,作为评论看起来真的很糟糕。我已经编辑了我的问题,再见。
-
QNetworkReply:
#include <QNetworkReply>是否加入了? -
感谢 eyllanesc,这就是我的问题的解决方案!
标签: c++ qt5 qmediaplayer