Qt:QVideoWidget 不显示并禁用应用程序中的所有按钮或极大地减慢应用程序的速度
Posted
技术标签:
【中文标题】Qt:QVideoWidget 不显示并禁用应用程序中的所有按钮或极大地减慢应用程序的速度【英文标题】:Qt: QVideoWidget doesn't show up and disables all buttons within application OR extremely slows down the application 【发布时间】:2016-06-23 08:59:53 【问题描述】:为了明确问题是:为什么,当我将 QVideoWidget 添加到我的应用程序时,所有按钮都变得不可点击,滚动条不起作用,并且组合框也变得不可点击? QVideoWidget 是否禁用了这些功能?或者这可能(就像我读到的in this SO question)QVideoWidget 只是通过添加到应用程序中而极大地减慢了我的应用程序?
现在详情: 我真的希望有人可以帮助我。我正在尝试使用以下代码将 QvideoWidget 放入我的桌面应用程序中(没什么特别的,就像在教程中一样):
// ...
// more code above for other things...
// main video-player widget
video_widget = new QVideoWidget;
video_widget->setMaximumHeight(100); // I could set any size here...this is not the point
video_widget->setMinimumHeight(100);
video_widget->setStyleSheet(STYLE_WIDGET_BG); // same background as the other widgets...
video_widget->setMaximumWidth(100);
video_widget->setMinimumWidth(100);
media_player = new QMediaPlayer(0, QMediaPlayer::VideoSurface);
TV_V_LAYOUT_MAIN_2->addWidget(video_widget); // #define TV_V_LAYOUT_MAIN_2 ui.lvl_4_tv2_h_1 --> this a layout inside another layout...
media_player->setVideoOutput(video_widget);
return; // this function is called inside the MainWindow constructor
所以有以下几种情况:
1) 在不添加视频小部件的情况下,一切都可以正常工作...
2) 只要我用上面的代码添加 QVideoWidget: app overview
会发生什么? 视频播放器不会以任何方式显示。至少应该像其他小部件一样有灰色背景,但什么也没有。然而按钮位置降低了,所以我猜播放器被插入了......问题是:所有按钮(我的意思是我的应用程序中的所有按钮)都被禁用。 组合框和滚动条也是如此。禁用我的意思是,当您单击它们时,它通常不会像单击按钮时那样“动画化”,并且滚动条不会滚动......
顺便说一句,QVideoWidget 并没有与下面的按钮放置在相同的布局中。您可以在此处查看布局层次结构:Layouts with Qt Designer
我想我错过了一些非常简单的东西。有人帮我解决了吗?
信息:我正在使用带有 Qt 插件的 Visual Studio 2013 进行编程;我只使用标准库; gstreamer 也包含在项目中(尚未实现)。
旧编辑:可能是 视频小部件的插入极大地减慢了应用程序,因此给人一种滚动条和按钮不起作用的错觉,只是因为它需要他们有很多时间来处理用户交互。这可能吗?有什么解决办法吗?
【问题讨论】:
我无法复制。请提供一个以编程方式创建小部件和布局并将其设置为重现问题的小型应用程序示例。请参阅e.g. this example 获取灵感。您的代码应该全部放入main
函数的主体中,无需自定义类,并且您可以将它们全部放在一个 main.cpp
中。
谢谢@KubaOber,但我的代码并不真正适合主函数。我也不允许发布它:) 不过我的问题涉及简单地添加一个 QVideoWidget 的事实,它会禁用所有按钮、滚动条功能(代码在上面;如果没有该代码,我的应用程序中的一切都可以正常工作)。正如所解释的,另一种可能性是视频小部件以某种方式减慢了应用程序的速度。所以我的问题是:有人遇到过同样的问题吗?他是怎么解决的?不过,谢谢您的提示,您对如何为读者改进我的问题还有其他建议吗?
【参考方案1】:
找到解决方案: 如果您的 QVideoWidgets 或 QMediaPlayers 极大地降低了您的应用程序的速度,那么您所要做的就是将所有(或只是需要的)Qt dll 移动到您的项目文件夹中。
这是非常基本的,我知道,但那是我的问题。现在它就像天堂一样运作。
【讨论】:
以上是关于Qt:QVideoWidget 不显示并禁用应用程序中的所有按钮或极大地减慢应用程序的速度的主要内容,如果未能解决你的问题,请参考以下文章
Qt系列文章之二十六(基于QMediaPlayer 在 QVideoWidget或QGraphicsVideoItem 组件上播放视频)
Qt系列文章之二十六(基于QMediaPlayer 在 QVideoWidget或QGraphicsVideoItem 组件上播放视频)