Я заинтересован в встраивании внешнего приложения в мое приложение на основе виджета QT 5.5. Я только занимаюсь этим, работая над Linux. Я использую CentOS 7 с GNOME.QT 5.5 встроить внешнее приложение в QWidget
Это код, который я пробовал:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QWindow *window = QWindow::fromWinId(125829124);
QWidget *widget = QWidget::createWindowContainer(window);
widget->setParent(this);
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(widget);
this->setLayout(layout);
}
В этом примере я получаю WinID отдельно и просто жесткое кодирование значения для тестирования. Запустится приложение для встраивания.
Когда я выполняю свое приложение, он запускается без ошибок. И приложение, которое будет внедрено, меняет положение экрана и изменяет размеры, однако оно не внедряется внутри моего приложения. Это все еще отдельное окно. Если я убью свое приложение, встроенное приложение также будет убито.
Итак, есть ли способ внедрить приложение внутри моего приложения?
*************** UPDATE ****************
Кое-что интересное я просто раскрыл. Когда я запускаю приложение (приложение-контейнер), второе приложение (тот, который я хочу встроить) остается независимым окном за пределами моего приложения. Однако, если я изменил размер окна моего приложения (щелкните в правом нижнем углу, чтобы изменить размер окна), второе приложение (для встраивания) также изменится, но остается независимым окном за пределами моего контейнерного приложения.
Еще более интересно то, что если я убью свое приложение, оба приложения «исчезнут» с рабочего стола. Однако System Monitor показывает, что второе приложение (тот, который я хочу встроить) все еще работает (однако без GUI). Теперь, если я снова запустил приложение, второе приложение фактически встроено в мое контейнерное приложение, как мне хотелось бы!
Так что, я думаю, мне нужно выяснить, почему убить мое приложение, а затем перезапустить его, правильно вставляет второе приложение.
«однако он не встраивать в моем приложении» вы можете предоставить скриншот? – jpo38