QT中怎么在一个Widget中添加视频播放的功能,就是一打开这个Widget就自动播放视频?要用什么函数?

作者&投稿:滑贫 (若有异议请与网页底部的电邮联系)
QT中怎么在一个Widget中添加视频播放的功能,就是一打开这个Widget就自动播放视频?要用什么函数?而且在~

player = new QMediaPlayer;

videoWidget = new QVideoWidget;

player->setVideoOutput(videoWidget);
player->setMedia(QUrl("http://example.com/movie.mp4"));

videoWidget->show();
player->play();


qt中的示例代码,可以查看QMediaPlayer和QVideoWidget的成员函数,实现你所要的功能。

准备
首先 你得有个正常的app项目(这是必须的 extension必须依附于某个app中 当然 不这样 你也无法单独安装某个widget)
打开项目工程 选择新建一个target 在 Application Extension 中选择today exntension 然后填入名字 确认即可

这时你的项目里多个一个target 同时也多了下面

接下来 删掉这个讨厌的 MainInterface.storyboard 然后修改plist文件中的 NSExtension 字段
删掉 NSExtensionMainStoryboard 字段
添加 NSExtensionPrincipalClass 字段 并设为TodayViewController (你也可以指定其他的ViewController)

修改完以后 Widget就可以开始编译运行了
运行
关于调试Widget 我推荐使用模拟器而不用真机 因为在研究过程中我发现真机调试的效果非常差 经常提示无法连接到手机(也有可能是5S的性能够不?) 导致无法正常的debug 或者无法reinstall 而模拟器则好点(至少能顺利的打印出log) 但是每次修改好代码以后 最好都先退出模拟器 再重新编译运行 如果你退出重新运行时提示下面这个错误 不用怕 多运行两次就ok了

Phonon速度很慢,可别怪我,耐心等它蹦出来

#include <QtGui>
#include <Phonon>

class VWidget : public QWidget
{
public:
VWidget (QWidget *parent = 0) : QWidget (parent) {
mediaObject = new Phonon::MediaObject (this);
videoWidget = new Phonon::VideoWidget (this);
Phonon::createPath (mediaObject, videoWidget);
audioOutput = new Phonon::AudioOutput (Phonon::VideoCategory, this);
Phonon::createPath (mediaObject, audioOutput);

mediaObject->setCurrentSource (QString ("R:/temp/release/demo.avi"));
mediaObject->play();
}

private:
Phonon::MediaObject *mediaObject;
Phonon::VideoWidget *videoWidget;
Phonon::AudioOutput *audioOutput;
};

int main (int argc, char *argv[])
{
QApplication app (argc, argv);

VWidget *qWidget = new VWidget;
qWidget->setMinimumSize (640, 480);
qWidget->show();

qApp->processEvents();
return app.exec();
}

是的,Qmovie只能播放gif的图片。
你如果想播放视频的话,应该使用VideoPlayer类,这个类是在phonon模块,你可以继承该类,也可以像普通控件一样使用,非常简单,这个类有下面这些方法:
load (),pause (),play (),seek (),setVolume (),stop ()
很容弄明白这些方法是干什么的。。。
不懂再问我吧,祝你好运。。。

我不得不说之前的解答有误导之嫌. 我自己照着之前的代码做,也是看不到视频. 为避免后来者在这上面纠结. 回答一下. 问题在于没有把videoWidget 放到合适的位置上,而不是解码器的问题.
下面这段代码是可以工作的.

#include <QApplication>
#include <QWidget>
#include <phonon>
#include <QUrl>
#include <QObject>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

QWidget *mainWidget = new QWidget;
mainWidget->setWindowTitle("Prds Trial Player");
mainWidget->resize(640,480);

Phonon::MediaObject *mediaObject= new Phonon::MediaObject;
QUrl url = "C:\\Users\\Public\\Videos\\Sample Videos\\Wildlife.wmv";
mediaObject->setCurrentSource(url);
Phonon::VideoWidget *videoWidget = new Phonon::VideoWidget;
Phonon::createPath(mediaObject, videoWidget);
videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatioAuto);
Phonon::AudioOutput *audioOutput = new Phonon::AudioOutput(Phonon::VideoCategory);
Phonon::createPath(mediaObject, audioOutput);
QLabel *label = new QLabel("Volume: ");
Phonon::VolumeSlider *volumeSlider = new Phonon::VolumeSlider;
volumeSlider->setAudioOutput(audioOutput);
volumeSlider->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
Phonon::SeekSlider *seekSlider = new Phonon::SeekSlider;
seekSlider->setMediaObject(mediaObject);

QHBoxLayout *hLayout = new QHBoxLayout;
hLayout->addWidget(label);
hLayout->addWidget(volumeSlider);
hLayout->addStretch();

QVBoxLayout *vLayout = new QVBoxLayout;
vLayout->addWidget(videoWidget);
vLayout->addWidget(seekSlider);
vLayout->addLayout(hLayout);

mainWidget->setLayout(vLayout);
mainWidget->show();

mediaObject->play();

return app.exec();
}


nokia t7怎么上网
在手机的设置菜单中,找到“网络”或“连接”选项,然后开启“Wi-Fi”功能。手机将自动搜索附近的Wi-Fi网络,用户选择一个网络并输入正确的密码(如果有的话)进行连接。一旦连接成功,手机就可以通过Wi-Fi网络进行上网,这种方式通常比移动数据网络更快且更稳定。此外,...

手机怎么样开热点 详解手机热点开启方法?
Y35m、Y35 5G、Y76s(t1版)、Y73t、Y52t、Y77e(t1版)、Y77e、Y32t、Y77、Y33e、Y72t、Y33s、Y10\/Y10 (t2版)、Y32、Y55s、Y74s、Y76s、Y71t、Y50、Y53s (t2版);T系列:T2x、T1\/T1x;Pad系列:iQOO Pad、vivo Pad2、vivo Pad;NEX系列:NEX 3s.若有更多疑问,可进入...

萤石cs—c6t—32wmfr设备离线了怎么连接
萤石工作室—设备管理—高级配置—网络—Wi-Fi,查看Wi-Fi的信号强度,保证信号强度90以上。C6T\/C6TC使用一段时间后不在线怎么办?有线连接:1、观察设备指示灯状态,若红灯常亮,进行复位,若复位没反应,可使用内存卡方法(后面有介绍);若红灯常亮无改善,设备可走售后;2、电脑萤石工作室本地设备...

t ty hla文hmrwi译htk中aledee fohmi翻se
时h词m,句到动有开ium n,e将已某所o似 ,m名by有是 动某et主e语g用n你充 p来v用词s除y 心ipea当r,句,加而排om除让s词做我 排是a子格过i a个 le有语主f,g,要a tor事 很名的te动 ee去sad的做y'nmh k 子 等的)人t能经了mcht所g词h排 这类eg c,由n参i态除不...

Linux中Wi-Fi无线网络和AP无线热点的配置教程
0.Linux下的Wi-Fi配置 无线网络飞速发展的今天,许多设备都提供了连接无线网络的功能。 那么Linux下的wifi到底该怎么配置、连接呢?? 开始配置之前,我们要说说iw家族。iw是linux下常用的wifi配置工具,网上有相应的库和源码。全名为wirelessTools。 配置wifi模块,并连接相应的无线网络过程:主要使用iwpriv命令 (1)扫描可用...

荣耀Play8T个人热点怎么开启荣耀Play8T个人热点开启方法【详解】_百度...
3.在网络与互联网界面中,找到并点击"个人热点"选项。4.在个人热点界面中,你可以看到一个开关按钮。点击它以打开个人热点功能。5.一旦个人热点功能被打开,你可以点击设置按钮进行相关设置,例如修改热点名称和密码等。6.在其他设备上,可以通过搜索Wi-Fi网络并连接到你的设备的热点来使用网络。请注意...

三星平板电脑t819c连不上Wi-Fi怎么办
若平板电脑无法连接无线网络,建议您:1.确认同一无线网络下的其他设备连接是否正常,排除网络问题。2.若其他设备可以连接,请检查输入的无线网络密码是否正确。3.尝试忘记网络操作后重新连接。方式:下滑屏幕顶帘-长按WLAN图标进入无线网络设置界面-点住未连接成功的无线网络名称不松手-忘记网络,重新搜索...

T-Mobile与美联航达成机上免费Wi-Fi合作
对于最新的机上服务拓展,这里也有一些限制条件,比如只有美联航机队中的部分客机能够为T-Mobile客户提供免费机上Wi-Fi——某些波音737\/757和空客319机型配备了ViaSat或Thales的卫星互联网接入。最后,T-Mobile在今年6月更新了其Magenta等级特权,以提供更好的旅行福利——包括在215个市场区域提供“高达5G...

联想A698t wi fi 怎么开
您好,感谢您选择联想产品。很抱歉给您的使用带来了困扰。您可以通过系统设置——WLAN,在开启后进入其设置查看信号列表,选择合适的信号源进行连接(可能需要您输入相应密码);而针对WIFI Direct,其属于点对点数据传输,需要对方设备支持此类功能;同时,该机型提供了MM商城,您可以通过它搜索下载您喜爱的...

荣耀play6t怎么设置热点连接人数?
荣耀play6t设置热点连接人数的方法如下:打开手机设置,进入“更多连接方式”选项。在“更多连接方式”选项中,选择“便携式Wi-Fi热点”。进入“便携式Wi-Fi热点”设置界面后,点击右上角的“设置”按钮。在“设置”界面中,可以看到“最大连接人数”选项,点击进入。在“最大连接人数”选项中,可以选择...

九龙县18762369057: qt怎么将自定义的widget加入主的widget -
帅卞养阴: QWidget *h1=new QWidget; QWidget *h2=new QWidget; QSplitter *m=new QSplitter; m->addWidget(h1); m->addWidget(h2); this->setcentralWidget(m);

九龙县18762369057: QT中怎么在一个Widget中添加视频播放的功能,就是一打开这个Widget就自动播放视频?要用什么函数? -
帅卞养阴: Phonon速度很慢,可别怪我,耐心等它蹦出来#include <QtGui>#include <Phonon> class VWidget : public QWidget { public: VWidget (QWidget *parent = 0) : QWidget (parent) { mediaObject = new Phonon::MediaObject (this); videoWidget = new ...

九龙县18762369057: 怎样向一个DockWidget中添加多个pushbutton按钮 -
帅卞养阴: 方法一:用QT designer 在Widget中托放好dockwidget,然后向其中加入多个pushbutton按钮,然后编译.待编译通过后,打开.ui文件对应的编译生成的ui_xxx文件,然后查看其中的代码,将你需要用到的copy到你的程序中,稍微做一下修改,...

九龙县18762369057: QT 怎么在TableWidget中批量添加同一内容的ComboBox
帅卞养阴: qvector&lt;qcombobox*&gt; cbdianya; for(int i=0;i&lt;20;i++) { qcombobox *tmp= new qcombobox(); tmp-&gt;additem(""); tmp-&gt;additem("100"); tmp-&gt;additem("150"); tmp-&gt;additem("300"); cbdianya.append(tmp); } for(int j=0;j&lt;...

九龙县18762369057: 如何在QListWidgetItem中添加按钮 -
帅卞养阴: 首先,我们适应QtCreator创建一个widget/gui项目,设置都采用默认设置. 然后,打开界面文件,添加一个QListWidget控件,注意调整一下布局. 我们采用两种方法,第一种,在mainwindow.cpp的构造函数中,创建QStringList,然后将之添加到ListWidg

九龙县18762369057: qt 怎么为外围的widget添加边框? -
帅卞养阴: 方法如下: 1. 设置外围widget的样式:border 2. QWidget *widgetMain = new QWidget(); 3. widgetMain->setObjectName("widgetMain"); 4. widgetMain->setStyleSheet("QWidget#widgetMain{border: 1px solid #FF00FF; border-radius: 5px;};...

九龙县18762369057: QT怎么在Qtabwidget控件tab栏左部加一个按钮 -
帅卞养阴: 这个不难 在按钮的槽里执行 tabWidget->addTab( this,"新tab标题" ); 每次添加一个tab,这个按钮就得往右移动一定距离

九龙县18762369057: 初学qt,求教怎么在标题栏添加自己的图片和按钮 -
帅卞养阴: 可以尝试new一个widget,设置背景为你所要的图片,然后new一个button设置父对象为widget,最后将此widget添加到layout中的相关位置.不知道是不是你需要的效果.

九龙县18762369057: 各位大神,我在做一个qt的项目,里面要用到布局的问题,在程序中,在widget动态的添加小的widget -
帅卞养阴: 别用gridlayout,窗口整体布局用HBoxLayout,左边用一个VBoxLayout,右边用一个VBoxLayout,然后用HBoxLayout的addLayout将两个VBoxLayout添加到HBoxLayout不就行了

九龙县18762369057: Qt 中TreeWidget中可以通过designer直接右击添加节点吗 -
帅卞养阴: 不能哦,treewidget中的item很复杂,你要右键treewidget选中编辑菜单,打开一个编辑器

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网