#c #qt #opengl #qml
Вопрос:
Мое приложение запущено встроенным в другое приложение, которое захватывает его, используя имя класса дескриптора окна. Я запускаю свое приложение Qt 5.7.1
с помощью QML
и. QML находится в QQuickViewer, который отображается через контейнер QWidget с помощью createWindowContainer и устанавливается в качестве центрального виджета моего главного окна. Моя проблема заключается в следующем. При загрузке в программу, которая встраивает мое приложение (которое у меня нет доступа к изменению), мое приложение становится черным экраном, как будто событие рисования графики завершается неудачей всякий раз, когда приложение, содержащее мое, получает фокус. Мое приложение перерисовывается и отображается нормально всякий раз, когда у него есть для этого причина (например, нажатие кнопки или нажатие на анимированный элемент управления).
Я перепробовал множество флагов и атрибутов окон, пытаясь заставить это работать. Даже установка средства визуализации на использование программного обеспечения OpenGL вместо этого, что фактически приводит к тому, что приложение не может захватить мой. Еще одно важное замечание заключается в том, что мое приложение отлично работает само по себе, только когда оно встроено в родительское приложение, у меня возникает проблема с черным экраном. Ниже приведен фрагмент кода из моего конструктора главного окна. Любые идеи будут высоко оценены. Я не эксперт по вопросам графики, поэтому мне жаль, если это не имело смысла.
в главном окне():
QQuickViewerApp myQQuickViewerApp(argc, argv, app);
QWidget * container = QWidget::createWindowContainer(myQQuickViewer->getViewer(), this);
container->setMinimumSize(QSize(665, 520));
container->setMaximumSize(2200, 2200); //Arbitrary for now
setCentralWidget(container);
setFocusProxy(container);
container->setFocusPolicy(Qt::NoFocus);
Комментарии:
1. Я предполагаю, что это проблема безопасности, специфичная для используемой вами платформы/операционной системы. Это все еще происходит, если вы запускаете его от имени администратора/root?
2. Да, к сожалению, так оно и есть. Запуск от имени администратора не влияет на поведение.