Как подружить QCamera и QGraphicsVideoItem?

Есть код:
#include <QtMultimediaWidgets>

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

    QGraphicsView * view = new QGraphicsView();
    QGraphicsScene * scene = new QGraphicsScene();
    QGraphicsVideoItem * item = new QGraphicsVideoItem();
    view->setScene(scene);
    scene->addItem(item);
    view->show();

    QCamera * camera;
    if(QCamera::availableDevices().count() > 0)
    {
        camera = new QCamera();
        camera->setViewfinder(item);
        camera->start();
    }

    return app->exec();
}

Он хорошо компилируется и запускается, окно появляется, но на этапе runtime камера ругается:
no video surface, cant start
Camera state changed: QCamera::LoadedState

В чем может быть дело? Qt 5.1.1, Windows 7 x64
  • Вопрос задан
  • 3787 просмотров
Решения вопроса 1
epicfailguy93
@epicfailguy93
У меня то же самое. Если вам срочно, то, пока не исправят, можно сделать так:

#include <QtGui/QtGui>
#include <QtWidgets/QtWidgets>
#include <QtMultimediaWidgets/QtMultimediaWidgets>

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

    QGraphicsView *view = new QGraphicsView();
    QGraphicsScene *scene = new QGraphicsScene();
    QVideoWidget *widget = new QVideoWidget();
    view->setScene(scene);
    scene->addWidget(widget);
    view->show();

    QCamera *camera;
    if(QCamera::availableDevices().count() > 0) {
        camera = new QCamera();
        camera->setViewfinder(widget);
        camera->start();
    }

    return app->exec();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы