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

倒, 试试这个。
页: 1 [2] 3
查看完整版本: sopcast前端继续更新(p2p的网络电视)