У меня есть приложение, которое захватывает и встраивает другое приложение, используя QWidget::createWindowContainer
. Вот код, ответственный за это:
void MainWindow::capture( WId wid )
{
auto window = QWindow::fromWinId( wid );
auto widget = QWidget::createWindowContainer( window );
ui->ContentFrame->layout()->addWidget( widget );
}
Приложение захвачено и успешно добавлено в макет, но перетаскивание не работает в захваченном приложении. При перетаскивании виджета курсор отображает X, когда виджет удерживается над захваченным приложением, и отбрасывание ничего не приводит.
Я пытался убедиться, что перетаскивание действительно включено, используя setAcceptsDrops()
и setAttribute( Qt::WA_AcceptDrops )
на только что созданном виджете, виджете, в который он встроен, и диалоге захвата, но ничего из этого не кажется чтобы изменить ситуацию.
Функция перетаскивания работает для захваченного приложения, когда оно запущено само по себе и не захвачено. Кажется, это процесс захвата, который ломает перетаскивание. Что-то, что мне нужно сделать вручную, чтобы убедиться, что это работает в моем сценарии?
Некоторая дополнительная информация: я разрабатываю с Qt 5.5.1 на Ubuntu 16.04. Захваченное приложение запускается с помощью QProcess
в приложении захвата.