Qt:QVideoWidget 不显示并禁用应用程序中的所有按钮或极度减慢应用程序
Qt: QVideoWidget doesn't show up and disables all buttons within application OR extremely slows down the application
要弄清楚问题是: 为什么,当我将 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
会发生什么?
视频播放器不会以任何方式显示。至少应该像其他小部件一样有灰色背景,但什么也没有。然而按钮位置降低了,所以我猜播放器被插入了......问题是:所有按钮(我的意思是我的应用程序中的所有按钮)被禁用。 组合框和滚动条也是如此。禁用我的意思是,当你点击它们时,它通常不会像点击按钮时那样 "animate",并且滚动条不会滚动...
顺便说一下,QVideoWidget 与下面的按钮不在同一布局中。您可以在此处查看布局层次结构:Layouts with Qt Designer
我想我漏掉了一些非常简单的东西。有人为我找到了解决方案吗?
信息:我正在使用 Visual Studio 2013 和 Qt 插件进行编程;我只使用标准库; gstreamer 也包含在该项目中(尚未实施)。
旧编辑:可能是 视频小部件的插入极大地减慢了应用程序,因此给人一种滚动条和按钮不起作用的错觉,只是因为他们需要花费大量时间来处理用户交互。这可能吗?有什么解决办法吗?
得到解决方案:
如果您的 QVideoWidgets 或 QMediaPlayers 极度降低您的应用程序速度,您所要做的就是将所有(或仅需要的)Qt dll 移动到您的项目文件夹中。
我知道这是非常基本的,但那是我的问题。现在它像天堂一样工作。
要弄清楚问题是: 为什么,当我将 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
会发生什么? 视频播放器不会以任何方式显示。至少应该像其他小部件一样有灰色背景,但什么也没有。然而按钮位置降低了,所以我猜播放器被插入了......问题是:所有按钮(我的意思是我的应用程序中的所有按钮)被禁用。 组合框和滚动条也是如此。禁用我的意思是,当你点击它们时,它通常不会像点击按钮时那样 "animate",并且滚动条不会滚动...
顺便说一下,QVideoWidget 与下面的按钮不在同一布局中。您可以在此处查看布局层次结构:Layouts with Qt Designer
我想我漏掉了一些非常简单的东西。有人为我找到了解决方案吗?
信息:我正在使用 Visual Studio 2013 和 Qt 插件进行编程;我只使用标准库; gstreamer 也包含在该项目中(尚未实施)。
旧编辑:可能是 视频小部件的插入极大地减慢了应用程序,因此给人一种滚动条和按钮不起作用的错觉,只是因为他们需要花费大量时间来处理用户交互。这可能吗?有什么解决办法吗?
得到解决方案: 如果您的 QVideoWidgets 或 QMediaPlayers 极度降低您的应用程序速度,您所要做的就是将所有(或仅需要的)Qt dll 移动到您的项目文件夹中。
我知道这是非常基本的,但那是我的问题。现在它像天堂一样工作。