• 7130阅读
  • 18回复

关于phonon视频播放 [复制链接]

上一主题 下一主题
离线tomtc123
 

只看楼主 倒序阅读 楼主  发表于: 2011-12-14
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2011-12-19) —
关键词: phononqt4


      


     用phonon的videoplayer class播放视频时,视频在videowidget的左上角,并且很小,是程序有问题还是视频的问题呢?能告诉我原因吗,谢谢。


源码:


#include <QApplication>
#include <QWidget>
#include <phonon>
int main(int argc,char *argv[])
{  
  QApplication app(argc,argv);  
  QWidget *widget = new QWidget;
  widget->setWindowTitle("Video Player");  
  widget->resize(400,400);      
  Phonon::VideoWidget *videoWidget = new Phonon::VideoWidget(widget);  
  Phonon::VideoPlayer *player =    
            new Phonon::VideoPlayer(Phonon::VideoCategory,videoWidget);  
  player->load(Phonon::MediaSource("./movie/kgee.avi"));  
  player->play();    widget->show();  
  return app.exec();
}
离线tomtc123

只看该作者 1楼 发表于: 2011-12-14


        网上查了查,发现很多是不能播放视频的问题,纠结了~~~
   这里视频倒能播放了,只是太小了~~~~
我用的是windows7+QT Creator 2.3.1
离线wxj120bw

只看该作者 2楼 发表于: 2011-12-14
回 1楼(tomtc123) 的帖子
直接贴下代码 不清楚有没有效果 你先尝试下
  1. QApplication app(argc,argv);
  2.     QWidget *widget = new QWidget;
  3.     widget->setWindowTitle("Video Player");
  4.     widget->resize(400,400);
  5.     QHBoxLayout *layout = new QHBoxLayout(widget);
  6.     Phonon::VideoWidget *videoWidget = new Phonon::VideoWidget(widget);
  7.     layout->addWidget(videoWidget);
  8.     Phonon::VideoPlayer *player = new Phonon::VideoPlayer(Phonon::VideoCategory,videoWidget);
  9.     player->load(Phonon::MediaSource("./movie/kgee.avi"));
  10.     player->play();
  11.     widget->show();
  12.     return app.exec();
离线roywillow

只看该作者 3楼 发表于: 2011-12-14
我认为是你没把播放视频widget放到主窗口的布局中
widget只new不delete大丈夫……?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线wxj120bw

只看该作者 4楼 发表于: 2011-12-14
回 3楼(roywillow) 的帖子
我也给忘了
离线tomtc123

只看该作者 5楼 发表于: 2011-12-15
回 2楼(wxj120bw) 的帖子


  我试了试,发现还是一样呢?
离线tomtc123

只看该作者 6楼 发表于: 2011-12-15
回 3楼(roywillow) 的帖子
加进了布局,还是这样~~~~在哪delete啊
离线wxj120bw

只看该作者 7楼 发表于: 2011-12-15
回 6楼(tomtc123) 的帖子
给Phonon::VideoWidget再加个布局 还有在那delete问看书
离线tomtc123

只看该作者 8楼 发表于: 2011-12-15
回 7楼(wxj120bw) 的帖子
VideoWidget已经加进了布局,我加了几个pushbutton看了下,布局没问题,videowidget占了那么宽,但视频只占一个小角落~~~~
离线wxj120bw

只看该作者 9楼 发表于: 2011-12-15
回 8楼(tomtc123) 的帖子
这个就不懂了 爱莫能助啊
离线tomtc123

只看该作者 10楼 发表于: 2011-12-15
回 9楼(wxj120bw) 的帖子


ok了,谢谢各位了,加一条就行了player->resize(200,200);设置Phonon::VideoPlayer的大小,未设置时是缺省值~~~~
离线wxj120bw

只看该作者 11楼 发表于: 2011-12-15
回 10楼(tomtc123) 的帖子
这个方法不妥 如果窗口拉大呢 还是200*200吗
离线tomtc123

只看该作者 12楼 发表于: 2011-12-15
回 11楼(wxj120bw) 的帖子
那改成 setCentralWidget(videoPlayer);




离线wxj120bw

只看该作者 13楼 发表于: 2011-12-15
回 12楼(tomtc123) 的帖子
晕 你调用QMainWindow::setCentralWidget()函数
离线tomtc123

只看该作者 14楼 发表于: 2011-12-15
回 13楼(wxj120bw) 的帖子
这样不行吗?
离线wxj120bw

只看该作者 15楼 发表于: 2011-12-15
回 14楼(tomtc123) 的帖子
不是 只是感觉奇怪了 如果setCentralWidget能行 前面的方案也应该行
离线roywillow

只看该作者 16楼 发表于: 2011-12-15
……是啊,如果centralWidget方法行得通,前面用布局应该也可以啊……
不过用centralWidget的话也就用不到自己的布局了,QMainWindow已经有布局了

至于delete
如果你非要那么用那个widget,可以将return app.exec()改成下面几句应该就可以了,不过我从来没试过
int i = app.exec();
delete widget;
return i;
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jacke_wang
只看该作者 17楼 发表于: 2011-12-18
把videowidget放在QWidget里面,然后videoWidget保持和QWidget一样的大小就行了,可以用
videoWidget->resize(containerWidget->size());

//contaninerWidget为videoWidget的Parent Widget,在分配videoWidget的时候指定的
离线itstudy
只看该作者 18楼 发表于: 2012-01-09
再加一个QWidget窗体a 将Phonon::VideoWidget等元素用LayoutBox布局后放到a上 之后 setCentralWidget(a)
快速回复
限100 字节
 
上一个 下一个