Здравствуйте.
Есть рабочий проект на Qt, QWidgets. Необходимо вывести изображение с потока GStreamer'a на виджет.
Настройка делается следующим образом:
gst_init(nullptr, nullptr);
//source, sink, pipeline, описанные ниже - GstElement*
source = gst_element_factory_make("nvarguscamerasrc", "source");
sink = hst_element_factory_make("nv3dsink", "sink");
pipeline = gst_pipeline_new("pipeline");
gst_bin_add_many(GST_BIN(pipeline), source, sink, NULL);
gst_element_link(source, sink);
gst_element_set_state(pipeline, GST_STATE_READY);
//tmpwgt - QWidget*
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink), tmpwgt->winId());
gst_element_set_state(pipeline, GST_STATE_PLAYING);'
Если я создаю независимый tmpwgt, который не является нчиьим дочерним объектом, то на него выводится видео.
Если накидать тестовую программку с виджетом для вывода и парой кнопок, то все будет нормально отрабатываться.
Если закомментить строчку
gst_element_set_state(pipeline, GST_STATE_PLAYING); , то отрабатывает как нужно, отображает в запущенное gstreamer'ом окно.
Если я его делаю дочерним от какого-либо объекта, не важно какой вложенности в Ui программы (добавлял в layout mainWindow) на него ничего не выводится.
Если мониторить сообщения, которые формирует GStreamer. ошибок никаких нет. Судя по ним, он запускается нормально, они одинаковые (по крайней мере коды и статусы перехода состояний)
Что делать, куда смотреть уже не знаю, может есть какие идеи?
P. S. Вопрос решён. Не давало вывести наличие флага Qt::WA_TranslucentBackground.