sejishikong
发表于 2005-11-26 16:48:27
换个频道试试,只要能弹出播放器,并且播放器不报错,其它的事情我管不了的。
yunfan
发表于 2005-11-26 17:39:58
对了,yunfan,你知道在QT下怎么取得这个页面的内容么?http://www.sopcast.org/channel
你参考一下下面的思路, 我刚才试了,可以下到
#include <qhttp.h>
#include <qfile.h>
class TestHttp : QObject
{
Q_OBJECT
public:
TestHttp();
~TestHttp();
void go();
private:
QHttp *http;
QFile *tmpFile;
public slots:
void slotDone(bool error);
};
#include "testhttp.h"
TestHttp::TestHttp() : QObject()
{
http = new QHttp();
connect(http, SIGNAL(done(bool)), SLOT(slotDone(bool)));
}
TestHttp::~TestHttp()
{
if(http) delete http;
}
void TestHttp::go()
{
tmpFile = new QFile("tmp.php");
if(!tmpFile->open(IO_WriteOnly)){
printf("cannot create the file\n");
return;
}
http->setHost("www.sopcast.org");
http->get("/channel/index.php", tmpFile);
}
void TestHttp::slotDone(bool error)
{
tmpFile->close();
delete tmpFile;
if(error) printf("load page error!\n");
}
另外,能不能给一个动态生成菜单并且点击菜单进行播放的思路。
我看你好像搞成动态的了么。
你在主程序里放个 QPopupMenu 的指针, 然后, 在 TrayIcon 里只要set这个menu, 你一旦下载到了新的列表, 更新主程序的全局的menu好了。
QPopupMenu *menu;
然后 connectactivate(int) 这个信号,
QObject::connect(menu, SIGNAL(activated(int)), this,SLOT(slotMenuActivated(int)));
每次更新的时候, 大概这么搞一下吧
menu->clear();
按播放列表list的次序一个一个加到 menu 里,
int id=0;
for(iter=palyList.begin(); iter!=playList.end(); ++iter){
menu->insertItem(*iter, id++);
}
在slotMenuActivated 里, 按index找到要放的, 按一般的方法调用就好了。
你看一下, 是不是能帮上忙。
pslist
发表于 2005-11-26 18:16:07
我的出错了。。。。
QFile::getch: File not open
QFile::atEnd: File is not open
QFile::getch: File not open
QFile::atEnd: File is not open
。。。。。
死循环?
sejishikong
发表于 2005-11-26 20:09:38
我的出错了。。。。
QFile::getch: File not open
QFile::atEnd: File is not open
QFile::getch: File not open
QFile::atEnd: File is not open
。。。。。
死循环?
呵呵,你看看/tmp里有没有一个$LOGNAME-channellist文件,或者可以在root用户下试试。
sejishikong
发表于 2005-11-26 20:13:20
对了,yunfan,你知道在QT下怎么取得这个页面的内容么?http://www.sopcast.org/channel
你参考一下下面的思路, 我刚才试了,可以下到
#include <qhttp.h>
#include <qfile.h>
class TestHttp : QObject
{
Q_OBJECT
public:
TestHttp();
~TestHttp();
void go();
private:
QHttp *http;
QFile *tmpFile;
public slots:
void slotDone(bool error);
};
#include "testhttp.h"
TestHttp::TestHttp() : QObject()
{
http = new QHttp();
connect(http, SIGNAL(done(bool)), SLOT(slotDone(bool)));
}
TestHttp::~TestHttp()
{
if(http) delete http;
}
void TestHttp::go()
{
tmpFile = new QFile("tmp.php");
if(!tmpFile->open(IO_WriteOnly)){
printf("cannot create the file\n");
return;
}
http->setHost("www.sopcast.org");
http->get("/channel/index.php", tmpFile);
}
void TestHttp::slotDone(bool error)
{
tmpFile->close();
delete tmpFile;
if(error) printf("load page error!\n");
}
另外,能不能给一个动态生成菜单并且点击菜单进行播放的思路。
我看你好像搞成动态的了么。
你在主程序里放个 QPopupMenu 的指针, 然后, 在 TrayIcon 里只要set这个menu, 你一旦下载到了新的列表, 更新主程序的全局的menu好了。
QPopupMenu *menu;
然后 connectactivate(int) 这个信号,
QObject::connect(menu, SIGNAL(activated(int)), this,SLOT(slotMenuActivated(int)));
每次更新的时候, 大概这么搞一下吧
menu->clear();
按播放列表list的次序一个一个加到 menu 里,
int id=0;
for(iter=palyList.begin(); iter!=playList.end(); ++iter){
menu->insertItem(*iter, id++);
}
在slotMenuActivated 里, 按index找到要放的, 按一般的方法调用就好了。
你看一下, 是不是能帮上忙。
非常感谢,原来是index.php,试了好几个都不对:D
嗯,其实动态菜单的思路我也是这么做的,但是有个问题,这样的话,停止、退出什么的一点也调用这个SLOT了,我不知道是怎么回事。
yunfan
发表于 2005-11-26 20:33:42
:mrgreen:
停止, 退出, 你放进去的时候, 记住他们的index就好, 进slot的时候判断一下就好了。
demonlj
发表于 2005-11-26 20:44:11
有yunfan大虾相助,呵呵。好弄多了
sejishikong
发表于 2005-11-26 21:02:25
:mrgreen:
停止, 退出, 你放进去的时候, 记住他们的index就好, 进slot的时候判断一下就好了。
我现在是先放电台列表,所以他们的index是不确定的,有什么办法能判断QPopupMenu的总Item数么?
或者我考虑下先放他们,不过那样的话,不太好看。
pslist
发表于 2005-11-27 00:04:44
有你说的 $LOGNAME-channellist 这个文件
然后该怎么办?
yunfan
发表于 2005-11-27 07:53:32
我现在是先放电台列表,所以他们的index是不确定的,有什么办法能判断QPopupMenu的总Item数么?
或者我考虑下先放他们,不过那样的话,不太好看。
count() 可以得到 item数。
sejishikong
发表于 2005-11-27 20:34:27
我现在是先放电台列表,所以他们的index是不确定的,有什么办法能判断QPopupMenu的总Item数么?
或者我考虑下先放他们,不过那样的话,不太好看。
count() 可以得到 item数。
嗯,多谢,不过昨天睡觉的时候忽然想起来,其实可以把频道列表做出子菜单的,就没有这个问题了。 :D
sejishikong
发表于 2005-11-29 21:29:12
#include <qhttp.h>
#include <qfile.h>
class TestHttp : QObject
{
Q_OBJECT
public:
TestHttp();
~TestHttp();
void go();
private:
QHttp *http;
QFile *tmpFile;
public slots:
void slotDone(bool error);
};
#include "testhttp.h"
TestHttp::TestHttp() : QObject()
{
http = new QHttp();
connect(http, SIGNAL(done(bool)), SLOT(slotDone(bool)));
}
TestHttp::~TestHttp()
{
if(http) delete http;
}
void TestHttp::go()
{
tmpFile = new QFile("tmp.php");
if(!tmpFile->open(IO_WriteOnly)){
printf("cannot create the file\n");
return;
}
http->setHost("www.sopcast.org");
http->get("/channel/index.php", tmpFile);
}
void TestHttp::slotDone(bool error)
{
tmpFile->close();
delete tmpFile;
if(error) printf("load page error!\n");
}
奇怪了,我用这段代码就会出现load page error,下不到任何东西。
yunfan
发表于 2005-11-30 08:15:15
命令行运行。
这个程序我这里可以正常下载到。
sejishikong
发表于 2005-11-30 08:29:48
压缩文件损坏:(
yunfan
发表于 2005-11-30 08:34:43
倒, 试试这个。